Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Outlook 2003发送富文本格式电子邮件_Python_Email_Outlook - Fatal编程技术网

Python 使用Outlook 2003发送富文本格式电子邮件

Python 使用Outlook 2003发送富文本格式电子邮件,python,email,outlook,Python,Email,Outlook,我正在尝试使用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"Cont

我正在尝试使用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() 
导入win32com.client
RTFTEMPLATE=“”
%

%s

""" 格式={“未指定”:0,“普通”:1,“HTML”:2,“RTF”:3} profile=“Outlook” subject=“subject” body=“测试消息” session=win32com.client.Dispatch(“Mapi.session”) outlook=win32com.client.Dispatch(“outlook.Application”) 会话登录(配置文件) mainMsg=outlook.CreateItem(0) mainMsg.To=”test@test.test" mainMsg.Subject=Subject mainMsg.BodyFormat=格式['RTF'] mainMsg.Body=RTFTEMPLATE%(主体,Body) mainMsg.Send()

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

如果必须使用RTF,则需要将HTML转换为RTF格式。看看这本书

要使用HTML,请更改行:

mainMsg.Body = RTFTEMPLATE % (subject,body)
致:


使用HTMLBody而不是正文时,Outlook会将邮件检测为HTML而不是RTF。
mainMsg.HTMLBody = RTFTEMPLATE % (subject,body)