我正在使用办公室和烧瓶邮件

时间:2019-02-08 21:39:12

标签: office365 flask-mail

我正在使用Office 365和Flask-mail向用户发送电子邮件,但是接收的格式是winmail.dat。是否需要任何配置以html格式发送电子邮件。谢谢

1 个答案:

答案 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时,请添加一些逻辑以确保长度不超过限制。