当前位置:  开发笔记 > 编程语言 > 正文

从Outlook电子邮件中提取嵌入图像

如何解决《从Outlook电子邮件中提取嵌入图像》经验,为你挑选了1个好方法。

我正在使用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(或其他任何内容)来提取实际图像并将其保存在本地?



1> Sergey Golov..:

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 Library(1.21)",单击"确定"

C:\Python25\Lib\site-packages\win32com\client>python makepy.py
Generating to C:\Python25\lib\site-packages\win32com\gen_py\3FA7DEA7-6438-101B-ACC1-00AA00423326x0x1x33.py
Building definitions from type library...
Generating...
Importing module

检查刚生成的文件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),同样的一般方法也会有效

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有