我正在使用Microsoft的CDO(协作数据对象)以编程方式从Outlook邮箱中读取邮件并保存嵌入式图像附件。我正在尝试使用Win32扩展从Python进行此操作,但是使用CDO的任何语言的示例都将有所帮助。
到目前为止,我在这里…
以下Python代码将读取我邮箱中的最后一封电子邮件,打印附件的名称,并打印邮件正文:
from win32com.client import Dispatch
session = Dispatch('MAPI.session')
session.Logon('','',0,1,0,0,'exchange.foo.com\nbar');
inbox = session.Inbox
message = inbox.Messages.Item(inbox.Messages.Count)
for attachment in message.Attachments:
print attachment
print message.Text
session.Logoff()
但是,附件名称类似:“ zesjvqeqcb_chart_0”。在电子邮件源中,我看到这样的图像源链接:
因此,是否可以使用此CID URL(或其他任何内容)提取实际图像并将其保存在本地?
OS / Outlook / CDO版本的差异可能是造成混淆的原因,因此,以下是使它在WinXP / Outlook 2007 / CDO
1.21上运行的步骤:
转到C:\ Python25 \ Lib \ site-packages \ win32com \ client \目录运行以下命令:
python makepy.py
从列表中选择“ Microsoft CDO 1.21库(1.21)”,单击“确定”。
C:\ Python25 \ Lib \ site-packages \ win32com \ client> python makepy.py
生成到C:\ Python25 \ lib \ site-packages \ win32com \ gen_py \ 3FA7DEA7-6438-101B-ACC1-00AA00423326x0x1x33.py
从类型库构建定义…
正在产生…
导入模块
检查刚刚生成的文件3FA7DEA7-6438-101B-ACC1-00AA00423326x0x1x33.py将使您了解可用的类,方法,属性和常量。
现在我们完成了无聊的步骤,下面是有趣的部分:
import win32com.client
from win32com.client import Dispatch
session = Dispatch('MAPI.session')
session.Logon ('Outlook') # this is profile name
inbox = session.Inbox
messages = session.Inbox.Messages
message = inbox.Messages.GetFirst()
if(message):
attachments = message.Attachments
for i in range(attachments.Count):
attachment = attachments.Item(i + 1) # yep, indexes are 1 based
filename = "c:\\tmpfile" + str(i)
attachment.WriteToFile(FileName=filename)
session.Logoff()
如果您使用的是旧版本的CDO(用于Win2k的CDO),则相同的通用方法也将起作用
我已经发布了一个与此相关的问题(电子邮件中的HTML嵌入式图像未显示),并更新了我的脚本以包含cid,但现在我的图像是附加的,而不是内联的。我不确定如何在outlook对象中使用内联图像。 然后创建一个outlook对象并将其与附件一起发送。 它是附加的,没有任何问题,但不嵌入内联。有谁能帮上忙吗。 我没有smtp服务器的详细信息,所以我不能使用smtp客户端。所以我试着像下面这样使用这个类Sys
问题内容: 我目前有一个程序,可以从列表中随机选择引号并通过电子邮件发送。我现在也尝试在电子邮件中嵌入图片。我遇到了一个问题,可以附加电子邮件,但报价不再起作用。我已经在网上进行了研究,但解决方案对我不起作用。请注意,我使用的是Python 3.2.2。 任何指导将不胜感激。 从上面的代码可以看出,我尝试了不同的方法(引用#) 问题答案: 您正在费力地在中构造有效的MIME消息,然后放弃它并发送一
问题内容: 我正在尝试发送包含嵌入式gif图像的多部分/相关html电子邮件。该电子邮件是使用Oracle PL / SQL生成的。我的尝试失败了,图片显示为红色X(在Outlook 2007和yahoo邮件中) 我已经发送HTML电子邮件已有一段时间了,但是我现在的要求是在电子邮件中使用多个gif图像。我可以将它们存储在我们的一台Web服务器上并仅链接到它们,但是许多用户的电子邮件客户端不会自动
我只想从Microsoft Graph/Outlook endpoint获取属于电子邮件的特定类别。但是is给了我相关电子邮件中的所有类别。 [https://graph.microsoft.com/beta/me/outlook/masterCategories/?过滤器=displayName eq'红色类别'] 上面的链接是我对微软图形应用编程接口的查询,我得到以下结果
问题内容: 我需要在电子邮件中嵌入图像。我该怎么做? 我既不想使用第三方工具,也不想对特定于语言的答案感兴趣(但是如果您想知道的话,它就是PHP)。 我只对生成的电子邮件正文的格式感兴趣。 问题答案: 如您所知,作为电子邮件传递的所有内容都必须文本化。 您必须创建包含多部分/ mime消息的电子邮件。 如果要添加物理图像,则该图像必须使用base 64编码并分配了Content-ID(cid)。如
我正在尝试在电子邮件中嵌入一个图像。我遵循了这里,这里和这里的例子和其他但我不能得到图像显示。 当我执行这个时,我得到的是一个空空如也的身体,里面有一个红十字,没有任何图像。如何使图像与电子邮件正文内联显示? 我正在使用Outlook 2016。我知道我可以在使用Outlook时插入图片,我也收到过别人在文本中插入图片的“正常”电子邮件,所以这肯定意味着我必须能够查看python脚本生成的图片?
这似乎很难,而且 我的电子邮件内容是html格式的,所以我必须首先将RTF转换为html格式。
我创建了一个构建html字符串作为电子邮件正文的代码。然而,我希望这封电子邮件是我的一般和基础电子邮件,我在第一个地方创建的附件。下面的代码实际上是有效的,但在最后,当我打开我的普通电子邮件时,我将第二封电子邮件作为附件,但当我单击它时,附件中的电子邮件是Black电子邮件。尽管我创建了html主体,但结果仍然如此。html字符串在最后一个方法“AddMessageAsAttachment”的末尾