Problems & Solutions --8 SMTP in flask_mail

124 篇文章 0 订阅

明明按照书中的代码来写,还是出错,大半天了。
还好解决了问题。


这样的报错 :smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')


解决办法竟然很简单:

smtp 简单邮件传输协议。

然后,一般邮箱中这个服务是关闭的。
可以自己开启这个服务,以QQ邮箱为例,设置→账户设置→开启这个SMTP服务:

这里写图片描述

QQ邮箱会自动生成一个授权码,flask_mail配置环境中的PASSWORD使用这个授权码,而不是邮箱密码。

这里写图片描述

然后运行flask程序,可以正常发送邮件了:

这里写图片描述


163邮箱,开启SMTP,会要求自己设置授权码。
使用时一样的,在环境配置时使用这个授权码,而不是邮箱密码。


测试用的代码,直接将邮箱名、密码写在了flask代码中。
书中建议在运行代码前命令行中输入这些配置,flask代码从命令行中获取邮箱名、密码、收件人。

from flask import Flask
from flask_mail import Mail, Message

app = Flask(__name__)
app.config.update(
    DEBUG = True,
    MAIL_SERVER='smtp.qq.com',
    MAIL_PROT=25,
    MAIL_USE_TLS = True,
    MAIL_USE_SSL = False,
    MAIL_USERNAME = '(这里写邮箱名)',
    MAIL_PASSWORD = '(这里输入授权码)',
    MAIL_DEBUG = True
)

mail = Mail(app)

@app.route('/')
def index():
    # sender 发送方,recipients recipients 邮件接收方列表
    msg = Message("Hi!This is a test ",sender='(发送方邮箱)', recipients=['(收件人邮箱)'])
    # msg.body 邮件正文 
    msg.body = "This is a first email"
    # msg.attach 邮件附件添加
    # msg.attach("文件名", "类型", 读取文件)
    with app.open_resource("E:\psu.jpg") as fp:
        msg.attach("image.jpg", "image/jpg", fp.read())

    mail.send(msg) #发送邮件

    return "Sent"  #网页中显示

if __name__ == "__main__":
    app.run()  # 访问http://127.0.0.1:5000/ 会运行index函数,发送邮件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值