Centos部署发邮件post接口

我将发送邮件用flask封装为post接口,直接进行post提交接口来发送邮件,虽然没啥用(可以弄个轰炸)。。。


配置环境

  • 163邮箱
  • Centos7.4
  • Python===3.6.5
  • Flask===1.0.2
  • PyEmail===0.0.1
  • gunicorn===19.9.0

邮箱开通STMP


常见的服务器端口

**25端口:**25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。
**465端口(SMTPS):**465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。

网易

163邮箱

 POP3:pop.126.com

 SMTP:smtp.126.com

 SMTP端口号:25

126邮箱

 POP3:pop.126.com

 SMTP:smtp.126.com

 SMTP端口号:25

QQ邮箱

  POP3:pop.qq.com 

  SMTP:smtp.qq.com  

  SMTP端口号:25   (使用SSL时,端口号465或587)

发送邮件代码

安装Python发送邮件的模块

pip3 install pyEmail
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import time


class EMAIL:

    # 第三方 SMTP 服务
    mail_host = "smtp.139.com"  # 设置服务器
    mail_user = "@139.com"  # 用户名
    mail_pass = ""  # 口令

    def __init__(self, receivers, message_text, message_header, num):
        self.receivers = [receivers]  # 发送的目标
        self.message = MIMEText(message_text, 'plain', 'utf-8')  # 发送内容
        self.message['Subject'] = Header(message_header, 'utf-8')  # 标题
        self.num = num  # 发送几次

    def send(self):
        try:
            smtpObj = smtplib.SMTP()
            smtpObj.connect(EMAIL.mail_host, 25)
            smtpObj.login(EMAIL.mail_user, EMAIL.mail_pass)
            smtpObj.sendmail(EMAIL.mail_user, self.receivers,
                             self.message.as_string())
        except Exception as e:
            smtpObj.quit()
            raise e + '发送失败'

    def send_email(self):   
        for _ in range(self.num):
            self.send()
if __name__ == '__main__':
    email_163 = EMAIL('1290259791@qq.com', '测试', '没有内容', 1)
    email_163.send()

Flask服务端代码

接受Post请求来调用发送邮件。

安装Flask模块。

pip3 install Flask
from flask import Flask, request, jsonify
from email_163 import EMAIL
app = Flask(__name__)


@app.route('/email', methods=['POST', 'GET'])

def index():
    if request.method == 'POST':
        email = request.form['email']
        text = request.form['text']
        header = request.form['header']
        num = request.form['num']
        email_163 = EMAIL(email, text, header, int(num))
        email_163.send_email()
        return 'ok'

    if request.method == 'GET':
        return jsonify('no')

if __name__ == '__main__':
    app.run(debug=True)

腾讯云解封25端口


打开后我在安全组里添加了25的出口规则。


部署Flask到服务器

可以参考Flask从0部署到腾讯云教程


测试请求

我用nginx映射的是8001端口到8000
访问http://域名:8001/email,出现no就是get请求。

可以使用下面的代码来测试post请求。

import requests
url = 'http://域名:8001/email'
data = {
	'email':'1290259791@qq.com',
	'text':'测试',
	'header':'标题',
	'num':3,
}
response = requests.post(url=url, data=data).text
print(response)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值