2015-10-20 71 views

回答

3

这是可能的,容易。我们假设msg是以前编写的包含所有标题和内容的消息,并且您要将其写入文件对象out。你只需要:

gen = email.generator.Generator(out) # create a generator 
gen.flatten(msg) # write the message to the file object 

完整的示例:

import email 

# create a simple message 
msg = email.mime.text.MIMEText('''This is a simple message. 
And a very simple one.''') 
msg['Subject'] = 'Simple message' 
msg['From'] = '[email protected]' 
msg['To'] = '[email protected]' 

# open a file and save mail to it 
with open('filename.elm', 'w') as out: 
    gen = email.generator.Generator(out) 
    gen.flatten(msg) 

filename.elm的内容是:

Content-Type: text/plain; charset="us-ascii" 
MIME-Version: 1.0 
Content-Transfer-Encoding: 7bit 
Subject: Simple message 
From: [email protected] 
To: [email protected] 

This is a simple message. 
And a very simple one. 
+0

谢谢。我从我的'emails'实例创建了一个'email'实例,它工作正常,但是有没有办法将它保存为'msg'而不是'eml'?我试图用open('filename.elm','w')'将'open'('filename.msg','w')'改成''但是(如预期的)outlook无法打开该文件。 – DeepSpace

+0

@DeepSpace msg格式是一种二进制专有格式。使用它的唯一合理方式是通过展望自动化。在SO中搜索'[python] outlook msg file'给了[这个问题](http://stackoverflow.com/q/18066180/),可以给你一些提示。我无法进一步帮助你,因为我几十年来一直没有使用outlook。 –

-1

它是在Python可行的,我想下面的代码,节省展望邮件作为.msg文件夹中。 注意:确保outlook具有对目标文件夹的写入权限,默认情况下目标文件夹是Python脚本的位置

import win32.com 

outlook=Dispatch("Outlook.Application").GetNamespace("MAPI") 
inbox=outlook.GetDefaultFolder(6) 
messages=inbox.items 
for msg in messages: 
    name=msg.subject 
    name=str(name) 
    name=name+".msg" 
    msg.saveas(name) 
相关问题