我想根据电子邮件的日期将所有传入的电子邮件组织到以下目录结构中:
ROOT --+-- YYYYMMDD --+-- HH --+-- mm --+-- YYYYMMDD-HHmmSS-000001
| | | |
| | | | ....
| | | |
| | | +-- YYYYMMDD-HHmmSS-NNNNNN
| | +-- mm --
| +-- HH --+-- mm --
请注意,每封电子邮件将存储为单独的文件,文件名称为 YYYYMMDD-HHmmss-NNNNN,其中 NNNNN 是连续编号。
procmail 或 maildrop 可以做到这一点吗?如果没有,还有什么其他选择?
提前致谢。
答案1
我没有一个答案可以满足你的全部需求,只能满足你的一部分需求。如果使用邮件到达的日期而不是邮件本身的日期标题就足够了,并且每个日期一个文件夹也足够了,那么您可以使用 maildrop 来执行此操作:
DEFAULT="$HOME/Maildir"
MAIL = "$HOME/Maildir"
DAY = `date +%d`
MONTH = `date +%m`
YEAR = `date +%y`
ARCHIVEFOLDER = $YEAR$MONTH$DATE
`test -d $MAIL/.$ARCHIVEFOLDER`
if ( $RETURNCODE != 0 )
{
`maildirmake -f $ARCHIVEFOLDER $MAIL`
}
# logfile "/tmp/maildrop"
# log $MAIL/.$SPAMORDNER
to $MAIL/.$ARCHIVEFOLDER
}
我希望你能在此基础上再接再厉。
答案2
如果您了解一些 Python,那么这应该是一个相当简单的练习:
Python 在标准库中附带了一个电子邮件包,允许您从文本文件中自动读取电子邮件将它们解析为可用的对象。解析它们后,您可以相应地输出它们(每条消息都有一个“as_string”方法)。
基本结构如下:
- 迭代你的文件
- 打开每个文件并解析为电子邮件对象
- 获取日期并将其拆分为您需要的字段
- 打开目标文件句柄(运行号为最后一个数字+1或1)
- 将 msg.as_string() 写入文件