用于发送电子邮件的 Flask 扩展
项目描述
Flask-EZMail
Flask-EZMail 是 Flask 更简单的电子邮件。
Flask-EZMail 是 Flask-Mail 的一个分支。它保持与 Flask-Mail 的高度兼容性,因此只需很少的代码重构即可从一个切换到另一个。
Flask-Mail 是一个方便的 smtlib 包装器,但它要求在创建应用程序时加载 SMTP 设置。如果您的用户通过 Web 界面输入 SMTP 设置,则它不是最佳的,需要解决方法。
Flask-EZMail 设计灵活。您可以像使用 Flask-Mail 一样在应用程序创建时加载 SMTP 设置,或者如果您的用户通过 Web 管理面板设置它们,您可以在以后的任何时间加载它们。看看下面的例子!
安装
pip install flask-ezmail
创建电子邮件对象
假设您想在创建应用程序时加载 SMTP 设置并且永远不要更改它们,就像 Flask-Mail 期望的那样:
# app/__init__.py
...
from flask_ezmail import Mail
...
<other app creation stuff goes here>
mail = Mail(
server=app.config['MAIL_SERVER'],
username=app.config['MAIL_USERNAME'],
password=app.config['MAIL_PASSWORD'],
port=app.config['MAIL_PORT'],
use_tls=True,
default_sender=app.config['DEFAULT_SENDER'],
debug=app.debug
)
在该示例中,您将有一个名为的全局变量mail,您可以使用from app import mail. 那里没有什么特别的,因为它类似于 Flask-Mail。
但这就是灵活性的所在!假设您的用户在创建应用程序后稍后在管理面板中填写了一个设置 SMTP 设置的表单。我们假设您已将其定义为EmailSetupForm您的app.models. 然后,您可以通过这种方式设置邮件:
from app.models import EmailSetupForm
from flask_ezmail import Mail
form = EmailSetupForm()
mail = Mail(
server=form.server.data,
username=form.username.data,
password=form.password.data,
port=form.port.data,
use_tls=True,
default_sender=form.default_sender.data,
debug=False
)
您现在已经动态创建了一个邮件对象!您可能希望将其存储起来以供以后在应用程序的其他地方使用。关于如何做到这一点,您有很多选择:
- 你可以腌制它并将其保存到redis:
import pickle
# this assumes you've set up redis in app/__init__.py
current_app.redis.set('mail', pickle.dumps(mail))
或者,如果您使用的是 Flask-SQLAlchemy,您可以创建一个继承自 的电子邮件模型Mail,并以这种方式保存:
# app/models.py
from flask_ezmail import Mail
class Email(Mail, db.Model):
__table_args__ = {'extend_existing': True}
id = db.Column(db.Integer, primary_key=True)
server = db.Column(db.String(128))
port = db.Column(db.Integer)
username = db.Column(db.String(128))
password = db.Column(db.String(128))
default_sender = db.Column(db.String(128))
outgoing_email = db.Column(db.String(128))
use_tls = db.Column(db.Boolean)
use_ssl = db.Column(db.Boolean)
debug = db.Column(db.Boolean, default=False)
max_emails = db.Column(db.Integer)
suppress = db.Column(db.Boolean)
如果你走 SQLAlchemy 路线,任何时候你需要获取你的电子邮件客户端,你只需:
mail = Email.query.first()
如果您需要即时更改 SMTP 设置:
from app import db
from app.models import Email
mail = Email.query.first()
if mail is not None:
mail.server = 'example.net'
db.session.commit()
发送消息使用与 Flask-Mail 相同的 Message 对象(在 Flask-EZMail 中克隆)。
from flask_ezmail import Message
msg = Message(
'Test Message',
sender='sender@sender.com',
recipients=['recipient@recipient.com'],
)
mail.send(msg)
Flask-EZmail 同样使用与connect()Flask-Mail 相同的方法。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
flask- ezmail -0.6.3.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | ef416a048672b29c20a40a926b50b5ad9b4097744078da626607c5a0e2066caa |
|
| MD5 | 4627d427bd518df7a8ac05b0e55741e7 |
|
| 布莱克2-256 | a595ab12d43632299c287a75c0693666e40487c417c7412455ac4d3449806e18 |
flask_ezmail -0.6.3-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | c8337a199c5bc7f6fa55eac291c087089ae4f71170d218a8295b5fec686566b5 |
|
| MD5 | f302edaa5e6fdc2907772869b3e79e88 |
|
| 布莱克2-256 | 1fce4c8fa084fc51f0fddbfd2686fd9c83a2a9312b4bc451cca67cbc5121a9b4 |