Cor*_*erg 4 python email outlook cdo.message
我正在使用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()
Run Code Online (Sandbox Code Playgroud)
但是,附件名称类似于:"zesjvqeqcb_chart_0".在电子邮件源中,我看到如下图像源链接:<IMG src ="cid:zesjvqeqcb_chart_0">
那么,是否可以使用此CID URL(或其他任何内容)来提取实际图像并将其保存在本地?
OS/Outlook/CDO版本的差异可能是混淆的原因,因此以下是使其适用于WinXP/Outlook 2007/CDO 1.21的步骤:
python makepy.py
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
现在我们已经完成了无聊的步骤,这是有趣的部分:
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()
Run Code Online (Sandbox Code Playgroud)
如果你有旧版本的CDO(win2k的CDO),同样的一般方法也会有效
| 归档时间: |
|
| 查看次数: |
5809 次 |
| 最近记录: |