2009-01-13 117 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

相關問題