如何解决从Outlook电子邮件中提取嵌入式图像
OS / Outlook / CDO版本的差异可能是造成混淆的原因,因此,以下是使它在WinXP / Outlook 2007 / CDO 1.21上运行的步骤:
- 安装CDO 1.21
- 安装win32com.client
-
转到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),则相同的通用方法也将起作用
解决方法
我正在使用Microsoft的CDO(协作数据对象)以编程方式从Outlook邮箱中读取邮件并保存嵌入式图像附件。我正在尝试使用Win32扩展从Python进行此操作,但是使用CDO的任何语言的示例都将有所帮助。
到目前为止,我在这里…
以下Python代码将读取我邮箱中的最后一封电子邮件,打印附件的名称,并打印邮件正文:
from win32com.client import Dispatch
session = Dispatch('MAPI.session')
session.Logon('','',1,'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(或其他任何内容)提取实际图像并将其保存在本地?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。