我正在使用Office365和Flask-mail向用户发送电子邮件,但收到的格式是winmail.dat。是否有任何配置需要发送html格式的电子邮件。谢谢
发布于 2019-09-29 18:51:28
对我来说,这个问题的答案是有效的:Flask mail security is not meeting Microsoft Outlook's security requirements?
长话短说:对于office 365,电子邮件的消息ID太长(超过78个字符)。消息ID是自动创建的。长度取决于应用程序的运行位置。在我的例子中,在本地它已经足够短了,但是在aws ec2实例上它太长了。
解决方案:缩短消息ID。
下面是一个粗略的代码:
from flask import Flask
from flask_mail import Mail, Message
import os
# instantiate flask app
app = Flask(__name__)
# set configuration and instantiate mail
mail_settings = {
"MAIL_SERVER": 'smtp.office365.com',
"MAIL_PORT": 587,
"MAIL_USE_TLS": True,
"MAIL_USE_SSL": False,
"MAIL_USERNAME": os.environ['EMAIL_USER'],
"MAIL_PASSWORD": os.environ['EMAIL_PASSWORD']
}
app.config.update(mail_settings)
mail = Mail(app)
# create message
msg = Message(subject=...,
sender=...,
recipients=...,
body=...)
# change message ID
msg.msgId = msg.msgId.split('@')[0] + '@short_string' # for instance your domain name
# send email
mail.send(msg)使用dir(msg)可以找到属性msgId。您可以使用print(msg.msgId)查看它,例如,它返回<15697538111.34514.8222011112852912398@DESKTOP-8RIS71Z.home>。您可以使用len(msg.msgId)检查长度。
当您更改消息ID时,请添加一些逻辑,以确保长度不超过限制。
https://stackoverflow.com/questions/54600601
复制相似问题