2021-09-17 Flask-Mail UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 51-53

阿杰学python Flask_Mail 解码问题
废话不多说,先上代码

from flask import Flask
from flask_mail import Mail
from flask_mail import Message

app = Flask(__name__)
app.config['MAIL_SERVER'] = 'smtp.qq.com'
app.config['MAIL_PORT'] = 465
app.config['MAIL_USE_SSL'] = True
app.config['MAIL_USERNAME'] = '3393370171@qq.com'
app.config['MAIL_PASSWORD'] = '***********' # 这里是授权码
app.config['MAIL_DEFAULT_SENDER'] = '3393370171@qq.com'
mail = Mail(app)


@app.route('/')
def welcome():
    msg = Message("测试邮件", recipients=['lj3393370171@163.com'])
    msg.body = 'love you cmx'
    msg.html = '这是一封测试邮件writebycmx'
    # msg.charset = r"utf-8"
    image = '关于url详解.jpg'
    with app.open_resource(image) as fp:
        msg.attach(image, 'image/jpg', fp.read())
    # try:
    #     mail.send(msg)
    # except Exception as e:
    #     return str(e)
    # return "发送成功"
    mail.send(msg)


if __name__ == '__main__':
    app.run()

然后就莫名报错:以下是报错的结果
UnicodeEncodeError
UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 53-55: ordinal not in range(128)
当然你也可以把注释去掉通过直接得到报错的结果
然后经过我一番排查,不管是通过加msg.charset 还是别的方法都不可以
,最后我发现在这里
在这里插入图片描述
你的路径应该和我不同,反正就是email\policy.py 这个文件你点击进去
在这里插入图片描述
然后删掉 if self.utf8 else 'ascil’就可以成功了,看到这里你可能觉得很奇怪,因为我们一般是不会更改扩展文件的,但是你在把这个文件往前翻,你会发现他的self.utf8 是None, 即使传了mgs.charset他这里的self.utf8好像也是None,那样charset="ascil"就会是定值了,所以才会到导致解码问题, 当然了也可能是我理解有误,不过这样确实是可以发过去的,而且也不会出现乱码问题

肯定还会有更好的解决办法,如果您有更好的解决办法,请赐教!!!万分感谢

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值