首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在使用office和Flask-mail

我正在使用office和Flask-mail
EN

Stack Overflow用户
提问于 2019-02-09 05:39:12
回答 1查看 2.6K关注 0票数 1

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

EN

回答 1

Stack Overflow用户

发布于 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。

下面是一个粗略的代码:

代码语言:javascript
复制
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时,请添加一些逻辑,以确保长度不超过限制。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54600601

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档