【问题标题】:Sending Rich Text Format email using Outlook 2003使用 Outlook 2003 发送富文本格式电子邮件
【发布时间】:2010-10-13 21:37:06
【问题描述】:

我正在尝试使用 Outlook 2003 发送富文本格式的电子邮件。 以下代码将 RTF HTML 源代码转储到邮件正文中。

我应该怎么做才能解决这个问题,让 Outlook 显示格式化数据而不是源 HTML?

import win32com.client

RTFTEMPLATE = """<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Dus-ascii">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
08.00.0681.000">
<TITLE>%s</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P DIR=3DLTR><SPAN LANG=3D"en-us"><FONT =
FACE=3D"Calibri">%s</FONT></SPAN><SPAN =
LANG=3D"en-us"></SPAN></P>

</BODY>
</HTML>"""

Format = { 'UNSPECIFIED' : 0, 'PLAIN' : 1, 'HTML' : 2, 'RTF'  : 3}
profile = "Outlook"
subject="Subject"
body = "Test Message"

session = win32com.client.Dispatch("Mapi.Session")
outlook = win32com.client.Dispatch("Outlook.Application")
session.Logon(profile)
mainMsg = outlook.CreateItem(0)
mainMsg.To = "test@test.test"
mainMsg.Subject = subject
mainMsg.BodyFormat = Format['RTF']
mainMsg.Body = RTFTEMPLATE % (subject,body)
mainMsg.Send() 

编辑:当使用 HTMLBody 而不是 Body 时,Outlook 将邮件检测为 HTML 而不是 RTF。

【问题讨论】:

    标签: python email outlook


    【解决方案1】:

    如果必须使用 RTF,则需要将 HTML 转换为 RTF 格式。查看zopyx package

    要使用 HTML,请更改行:

    mainMsg.Body = RTFTEMPLATE % (subject,body)
    

    到:

    mainMsg.HTMLBody = RTFTEMPLATE % (subject,body)
    

    【讨论】:

    • 当使用 HTMLBody 而不是 Body 时,Outlook 将邮件检测为 HTML 而不是 RTF。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多