如何将邮件转换为 eml?

Posted

技术标签:

【中文标题】如何将邮件转换为 eml?【英文标题】:How to convert mails to eml? 【发布时间】:2021-09-04 15:30:13 【问题描述】:

将邮件转换为 EML?

我有一个服务器,我想将邮件转换为 EML 以进行备份

如何做到这一点?

尝试了以下方法;

import imaplib
import getpass
import argparse

argparser = argparse.ArgumentParser(description="Dump a IMAP folder into .eml files")
argparser.add_argument('-s', dest='host', help="IMAP host, like imap.gmail.com", default= 'mail..nl')
argparser.add_argument('-u', dest='username', help="IMAP username", default= 'e@.nl')
argparser.add_argument('-r', dest='remote_folder', help="Remote folder to download", default='INBOX.html')
argparser.add_argument('-l', dest='local_folder', help="Local folder where to save .eml files", default='.')
args = argparser.parse_args()

gmail = imaplib.IMAP4_SSL(args.host)
gmail.login(args.username, password1)
gmail.select(args.remote_folder)
typ, data = gmail.search(None,'ALL')
for num in data[0].split():
    typ, data = gmail.fetch(num, '(RFC822)')
    f = open('%sand%s  .eml' %(args.local_folder, num), 'w')
    print(data[0][1], file=f)
    f.close()
gmail.close()
gmail.logout()

上述方法正常,但打开文件时没有得到输出

也试过这个:

import os
cwd = os.getcwd()
outfile_name = os.path.join(cwd, 'message.eml')

class Gen_Emails(object):    
    def SaveToFile(self,msg):
        with open(outfile_name, 'w') as outfile:
            gen = generator.Generator(outfile)
            gen.flatten(msg)

with MailBox('mail.yourubl.nl').login('login.nl', 'pwd', initial_folder='INBOX') as mailbox:
    for msg in mailbox.fetch():
        SaveToFile(msg)

导致错误:AttributeError: 'MailMessage' 对象没有属性'policy'

请帮忙!

【问题讨论】:

在您的第一个脚本中,您没有在路径中添加“/”。如果用户为 local_folder 指定了“/home/user/Documents”,则消息将作为名为@9​​87654323@ 的文件存储在用户主目录中,而不是存储在 Documents 文件夹中。您可能还想删除其中的空格。 【参考方案1】:

你必须学习python,还有一些算法书籍。

https://github.com/ikvk/imap_tools/blob/master/examples/email_to_file.py

您似乎试图复制/粘贴而不是编程。

我并不想作恶。

【讨论】:

谢谢弗拉基米尔!

以上是关于如何将邮件转换为 eml?的主要内容,如果未能解决你的问题,请参考以下文章

从 MIME 消息信息创建 EML 文件

Exchange 2013/2016邮件队列重播操作

将 MimeMessage 对象消息转发为 EML 文件中附件的常规转发格式

将简单的 emaildump 转换为 maildir 或 mbox 格式

如何从 Java 中的 MimeMessage 电子邮件中检索正文

从python中的.eml文件解析excel附件