2009-01-13 200 views
4

我正在使用Microsoft的CDO(协作数据对象)以编程方式从Outlook邮箱读取邮件并保存嵌入式图像附件。我正尝试使用Win32扩展从Python执行此操作,但使用CDO的任何语言的示例都会有所帮助。从Outlook电子邮件中提取嵌入的图像

到目前为止,我在这里......

以下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”。里面的邮件源,我看到图像源链接是这样的: < IMG SRC =“CID:zesjvqeqcb_chart_0” >

那么,是不是可以使用这个CID URL(或其他任何东西)中提取的实际图像并保存它在本地?

回答

5

差异OS /观/ CDO的版本是什么可能是混乱的根源,所以这里是得到它的工作在WinXP/Outlook 2007中/ CDO 1.21步骤:

  • 安装CDO 1.21
  • 安装win32com.client
  • 转到C:\ Python25 \ LIB \站点包\ win32com \客户端\目录中运行以下命令:
python makepy.py
    从列表中
  • 选择 “Microsoft CDO 1.21库(1.21)”,单击一个刚刚产生OK
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() 

,如果您有(安装Win2K CDO)旧版本的CDO的相同的一般做法也将工作

+0

我正在尝试使用上面的代码,它不工作。我没有看到我的附件对象中的方法和属性。想法? – 2009-01-13 21:06:44

相关问题