Flask mail

 关于flask mail的教程

 如果没有安装flask mail, 执行:

pip3 install flask_mail

配置Flask-Mail

配置默认值功能
MAIL_SERVERlocalhost邮件服务器
MAIL_PORT25端口(一般465)
MAIL_USE_TLSFalse是否使用TLS协议
MAIL_USE_SSLFalse是否使用SSL协议
MAIL_DEBUGapp.debug是否为DEBUG模式,打印调试消息
MAIL_SUPPRESS_SENDapp.testing设置是否真的发送邮件,True不发送
MAIL_USERNAMENone用户名,填邮箱
MAIL_PASSWORDNone授权码
MAIL_DEFAULT_SENDERNone默认发送者,填邮箱
MAIL_MAX_EMAILSNone一次连接中的发送邮件的上限
MAIL_ASCII_ATTACHMENTSFalse如果 MAIL_ASCII_ATTACHMENTS 设置成 True 的话,文件名将会转换成 ASCII 的。一般用于添加附件。
from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)

# 邮箱服务器, 每个邮箱的配置不一样
# 因为使用了qq的邮箱所以是smtp.qq.com
# 如果使用了163是smtp.163.com
# 我在这里用的qq
app.config['MAIL_SERVER'] = 'smtp.qq.com'
# 端口要根据设置来改
# 端口一般是465
app.config['MAIL_PORT'] = 465

# qq使用的不是TLS协议
# 应用了TLS的传输协议
# app.config['MAIL_USE_TLS'] = True

# 应用ssl传输协议
app.config['MAIL_USE_SSL'] = True

# 配置邮件的用户名(仅仅只是qq号,不要@qq.com)
app.config['MAIL_USERNAME'] = '123'

# 邮件账户的密码,这个密码是指的授权码!
# 不是密码,一定要授权码,一般是16位的字符
app.config['MAIL_PASSWORD'] = 'absfasdas'

# 设置默认发送的邮箱账号(这里要求是123@qq.com,这种格式)
app.config['MAIL_DEFAULT_SENDER'] = '123@qq.com'

mail = Mail(app)

@app.route('/')
def index():
    # sender是发送者的账号
    # recipients是接收者的账号
    msg = Message('这个是邮件自动发送测试', sender='123@qq.com', 
            recipients=['456@qq.com'])
    msg.body = 'hello'
    msg.html = '<b>hello</b> hao'
    # 发送邮件
    mail.send(msg)
    return '<h1>success</h1>'

if __name__ == '__main__':
    app.run(debug=True)
# recipients为接收方,可以设置一个或者多个收件人,也可以后续再添加
msg.recipients = ["xxx@qq.com"]
msg.add_recipient("xxxx@qq.com")

当同时发送大量的文件时:

通常在一个 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)

发送附件时:

如果 MAIL_ASCII_ATTACHMENTS 设置成 True 的话,文件名将会转换成 ASCII 的。 当文件名是以 UTF-8 编码的时候,使用邮件转发的时候会修改邮件内容并且混淆 Content-Disposition 描述,这个时候 MAIL_ASCII_ATTACHMENTS 配置项是十分有用的。转换成 ASCII 的基本方式就是对 non-ASCII 字符的去除。任何一个 unicode 字符能够被 NFKD 分解成一个或者多个 ASCII 字符。

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

PS: 部分引用了:https://juejin.im/entry/594266e35c497d006bc4ae22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值