📜  在 Flask-Mail 中使用 API 发送电子邮件(1)

📅  最后修改于: 2023-12-03 15:37:20.186000             🧑  作者: Mango

在 Flask-Mail 中使用 API 发送电子邮件

在开发 Web 应用程序时,我们通常需要发送电子邮件。Flask-Mail 是 Flask 扩展的一部分, 它提供了发送电子邮件的一种简单方法, 可以基于 Flask 应用程序配置信息设置邮件的配置和认证, 避免了直接访问 SMTP 服务器的麻烦。

安装

可以通过 pip 安装 Flask-Mail:

pip install Flask-Mail
配置

在 Flask 应用程序中, 我们需要使用 Flask-Mail 来配置邮件服务。

from flask import Flask
from flask_mail import Mail

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey'
app.config['MAIL_SERVER'] = 'smtp.gmail.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = 'your_email@gmail.com'
app.config['MAIL_PASSWORD'] = 'your_password'

mail = Mail(app)

上面的配置将 Gmail 与 SSL 端口相结合。在这里,替换 "your_email" 和 "your_password" 你自己的 Gmail 邮箱和密码。

发送电子邮件

使用 Flask-Mail 发送电子邮件只需要几行代码:

from flask_mail import Message

msg = Message("标题", sender="your_email@gmail.com", recipients=["recipient_email@example.com"])
msg.body = "邮件内容"

with app.app_context():
    mail.send(msg)

在这里,sender 是发送方的邮箱, recipients 是一个列表, 包含一个或多个电子邮件地址。在 with app.app_context() 里的代码,是使用 Flask 应用程序的上下文访问 mail 对象。

可以使用 msg.html 来指定邮件内容的 HTML 版本。

msg.html = "<h1>邮件内容以 HTML 格式发送</h1>"

另外,可以使用 msg.attach() 来添加附件。

with app.open_resource("static/image.png") as fp:
    msg.attach("image.png", "image/png", fp.read())

其中, open_resource() 方法是 Flask 提供的, 这里用于查找静态文件 image.png , 并返回一个打开该文件的文件对象。

总结

在 Flask 应用程序中使用 Flask-Mail 来发送电子邮件是一件非常容易的事情。需要注意的是, 发送邮件前必须正确配置邮件服务器以及提供正确的邮箱账号和密码。

参考资料