关于Flask 邮件发送功能的代码实现,很多文章讲得并不清楚,往往学习视频才能讲清楚,我在这里出一个简单实例,直接告诉你各个配置具体对应的是什么意思以及如何获取。
1、实例
from flask import Flask
from flask_mail import Mail, Message
app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.qq.com' # 邮件服务器地址,这个不需要改
app.config['MAIL_PORT'] = 465 # 邮件服务器端口,这个不需要改
app.config['MAIL_USERNAME'] = '你的QQ邮箱号'
app.config['MAIL_PASSWORD'] = '到你的QQ邮箱主页,点击设置,账户,开启SMTP服务,发送短信即可获得授权码,填在这里'
app.config['MAIL_USE_SSL'] = True # 启用 SSL
app.config['MAIL_DEFAULT_SENDER'] = '你的QQ邮箱号' # 设置默认用来发送邮件的邮箱,建议和MAIL_USERNAME保持一致
mail = Mail(app)
@app.route('/')
def index():
msg = Message(subject='Mail Test', recipients=['写一个你要发送邮件的接收方邮箱号,可以用你自己其他的邮箱来测试'], body="这是一封测试邮件。")
mail.send(msg)
return "邮件已成功发送!"
if __name__ == '__main__':
app.run(debug=True)
程序效果:
2、安装
pip install flask-mail
3、服务器地址和端口信息汇总
服务器名称 | 服务器地址 | SSL协议端口号 | 非SSL协议端口号 |
IMAP | imap.qq.com | 993 | 143 |
SMTP | smtp.qq.com | 465/587 | 25 |
POP3 | pop.qq.com | 995 | 110 |
4、参数信息
- MAIL_DEBUG:支持自定义调试,默认是Flask应用程序的调试状态;
- MAIL_SERVER: 电子邮件服务器的ip地址;
- MAIL_PORT: 电子邮件服务器端口;(默认不加密为25)
- MAIL_DEFAULT_SENDER:设置默认发件人;
- MAIL_MAX_EMAILS:设置要发送的最大邮件;
- MAIL_SUPPRESS_SEND: 如果app.testing设置为true,则发送被抑制;
- MAIL_ASCII_ATTACHMENTS: 如果设置为true,则将附加的文件名转换为ASCII;
- MAIL_USE_TLS:是否使用TLS加密;
- MAIL_USE_SSL:是否使用SSL加密;
- MAIL_USERNAME: 邮件账户名;
- MAIL_PASSWORD: 邮件账户密码。