我正在使用Office 365和Flask-mail向用户发送电子邮件,但是接收的格式是winmail.dat。是否需要任何配置以html格式发送电子邮件。谢谢
答案 0 :(得分:1)
对我来说,此问题的答案有效: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时,请添加一些逻辑以确保长度不超过限制。