我想使用 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()