涉及的包
- Flask-Mail
- SendGrid-python
6.1使用Flask-mail发送邮件
from flask_mail import Mail
app = Flask(__name__)
...
mail = Mail(app)
6.1.1 配置Flask-Mail
Flask-Mail的常用配置
配置键 | 说明 | 默认值 |
---|---|---|
MAIL_SERVER | 用于发送邮件的SMTP服务器 | localhost |
MAIL_PORT | 发送端口 | 25 |
MAIL_USE_TLS | 是否使用STATRTLS | False |
MAIL_USE_SSL | 是否使用SSL/TLS | False |
MAIL_USERNAME | 发信服务器的用户名 | None |
MAIL_PASSWORD | 发信服务器的密码 | None |
MAIL_DEFAULT_SENDER | 默认的发信人 | None |
SSL/TLS 加密
MAIL_USE_SSL = True
MAIL_PORT = 465
STARTTLS 加密
MAIL_USE_TLS = True
MAIL_PORT = 587
常用SMTP服务提供商配置
电子邮件服务提供商 | MAIL_SERVER | MAIL_USERNAME | MAIL_PASSWORD | 额外步骤 |
---|---|---|---|---|
Gmail | stmp.gmail.com | 邮箱地址 | 邮箱密码 | 开启“Allow less secure apps",在本地设置VPN代理 |
stmp.qq.com | 邮箱地址 | 授权码 | 开启SMTP服务并获取授权码 | |
Sina | stmp.sina.com | 邮箱地址 | 邮箱密码 | 开启STMP服务 |
163 | stmp.163.com | 邮箱地址 | 授权码 | 开启STMP服务 |
Outlook | stmp.live.com 或 stmp.office365.com | 邮箱地址 | 邮箱密码 | 无 |
邮件服务配置demo
import os
from flask import Flask
from flask_mail import Mail
app = Flask(__name__)
app.config.update(
...
MAIL_SERVER = os.getenv("MAIL_SERVER"),
MAIL_PORT = 587,
MAIL_USE_TLS = True,
MAIL_USERNAME = os.getenv("MAIL_USERNAME"),
MAIL_PASSWORD = os.getenv("MAIL_PASSWORD"),
MAIL_DEFAULT_SENDER = ("aRTIO", os.getenv("MAIL_USERNAME")),
)
mail = Mail(app)
.env
MAIL_SERVER = stmp.exemple.com
MAIL_USERNAME = yourname@example.com
MAIL_PASSWORD = your_password
默认发信人由一个两元素元祖组成,即(姓名,邮箱地址)
MAIL_DEFAULT_SENDER = (”Yourname","your_name@example.com")
6.1.2构建邮件数据
from flask_mail import Message
from app import mail
message = Message(subject="Hello, World", recipients=["Revicer <reciver@example.com>"], body="body")
发送邮件
mail.send(message)
网友评论