gpt4 book ai didi

python - 发送至交易所 : How to Disable Disable Lossy Conversion of HTML to RTF?

转载 作者:太空宇宙 更新时间:2023-11-03 18:53:03 28 4
gpt4 key购买 nike

我有一个 python 脚本,它发送包含文本、html 和 ics 附件的多部分电子邮件。这个想法是,现代电子邮件客户端将呈现 HTML 部分并提供将事件添加到用户日历中的功能。

代码如下:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from icalendar import Calendar, Event, UTC, vText, vCalAddress
# ... set up calendar invite, render text and html templates ...
msg = MIMEMultipart('alternative')
msg_text = MIMEText(body_text, 'plain', 'utf-8')
msg_html = MIMEText(body_html, 'html', 'utf-8')
meeting = MIMEText(cal.as_string(), 'calendar;method=REQUEST', 'utf-8')
meeting.set_param('method', 'REQUEST')
meeting.set_param('name', 'meeting.ics')
meeting.add_header('Content-class', 'urn:content-classes:calendarmessage')
# ... set up various message attributes: to/from/subject ...
msg.add_header('Content-class', 'urn:content-classes:calendarmessage')
msg.attach(msg_text)
msg.attach(msg_html)
msg.attach(meeting)
s = smtplib.SMTP(smtp_server)
s.sendmail(sender, send_to, msg.as_string())

这有效:我收到消息,它显示为 HTML,并且我可以轻松地将事件添加到 Outlook 和 Mac Mail 中的日历中。但是,HTML 已损坏。以下是 HTML 中的说明:

<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from rtf -->

这是我目前所知道的:

  • 如果我删除日历附件,HTML 会直接通过,无需转换。
  • 只有最后将日历附加到邮件中,我才能收到工作日历邀请。

因此,附加日历邀请会导致 Exchange 弄乱我的 HTML 消息。我是否可以在邮件或 HTML 中添加 header ,以要求 Microsoft 不要将我的 HTML 转换为 RTF?

最佳答案

Outlook 仅在涉及约会、任务和联系人时使用 RTF。如果 session 邀请带有 HTML 正文,它会转换为 RTF。

更新:从 Outlook 2016 开始,情况已不再如此:Outlook 现在原生支持 HTML 的约会和任务。 HTML 存储在 PR_HTML 中(或 RTF 包装的 HTML 存储在 PR_RTF_COMPRERSSED 中),您可以像常规电子邮件一样指定格式。不幸的是,它仍然没有在 Outlook 对象模型级别上公开 - 还没有 AppointmentItem.HTMLBody 属性。

关于python - 发送至交易所 : How to Disable Disable Lossy Conversion of HTML to RTF?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17870620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com