1.安装 pip install Flask-Mail
from flask import Flask
from flask_mail import Mail
app = Flask(__name__)
# ...
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USE_TLS'] = False
app.config['MAIL_USERNAME'] = 'XXX@qq.com'
app.config['MAIL_PASSWORD'] = '填授权码'
# ...
mail = Mail(app)
from flask_mail import Message
msg = Message(subject="Hello World!",
sender="from@qq.com", # 发件人
recipients=["to@example.com"] # 收件人)
"""
subject为邮件标题。
sender为发送方,如果你设置了 “MAIL_DEFAULT_SENDER”,就不必再次填写发件人,默认情况下将会使用配置项的发件人。
recipients为接收方,可以设置一个或者多个收件人,也可以后续再添加。
msg.recipients = ["xxx@qq.com"]
msg.add_recipient("xxxx@qq.com")
如果 sender 是一个二元组,它将会被分成姓名和邮件地址:
msg = Message("Hello",
sender=("Me", "me@example.com"))
邮件内容可以包含主体以及/或者 HTML:
msg.body = "testing"
msg.html = "<b>testing</b>"
最后,发送邮件的时候请使用 Flask 应用设置的 Mail 实例:
mail.send(msg)
"""
大量邮件
通常在一个 Web 应用中每一个请求会同时发送一封或者两封邮件。在某些特定的场景下,有可能会发送数十或者数百封邮件,不过这种发送工作会给交离线任务或者脚本执行。
在这种情况下发送邮件的代码会有些不同:
with mail.connect() as conn:
for user in users:
message = '...'
subject = "hello, %s" % user.name
msg = Message(recipients=[user.email],
body=message,
subject=subject)
conn.send(msg)
与电子邮件服务器的连接会一直保持活动状态直到所有的邮件都已经发送完成后才会关闭(断开)。
网友评论