检索邮件并单独处理每个附件

检索邮件并单独处理每个附件

我想使用 shell 脚本检索新邮件,如果我刚刚检索的邮件有附件,这些附件应保存到文件夹中。在检索下一封邮件之前,应单独处理附件,例如应检查名称和移动文件等。

我知道如何从命令行检索邮件并保存附件(使用 mutt),但随后所有邮件附件都会被保存。所以我无法在收到每封邮件后立即检查和处理附件。

我很高兴收到提示。

库安迪

答案1

我想出了一个下面的脚本。请注意,我不是程序员。但我相信这对你来说可能是一个好的开始。

像这样为每条消息运行它./script FILENAME

有几件事需要完成:

  • 重复的文件名,
  • 缺少文件名,
  • 更好地处理多部分/相关。
#!/usr/bin/env python3
import os
import sys
import email

fp = open(sys.argv[1],"r")
msg = email.message_from_file(fp)
fp.close()

content_types_to_skip=[
  'text/plain',
  'text/html',
  'multipart/mixed',
  'multipart/alternative',
  'multipart/related'
]
attach_dir='/tmp/attachments/'
if not os.path.exists(attach_dir):
  os.mkdir(attach_dir)

# get text/plain only
if msg.is_multipart():
  for part in msg.walk():
    ctype = part.get_content_type()

    if ctype not in content_types_to_skip:
      attachment = part.get_payload(decode=True)
      name = str(part.get_filename())
      fp = open(attach_dir + name,"wb")
      fp.write(attachment)
      fp.close()

相关内容