如何使用procmail保存电子邮件主体作为文件名?

时间:2017-08-31 15:06:50

标签: procmail

我正在使用procmail来保存电子邮件正文,如下所示:

:0: tmpProcmail.lock
* ^From:.*(SOME EMAIL).*
* ^Subject: SOME SUBJECT.*
| cat > /SOME DIRECTORY/$(date +\%Y\%m\%d).txt

我想知道我是否可以将整个主题用作我的文件名而不是日期。

1 个答案:

答案 0 :(得分:0)

这并不是一个特别好的主意,但这并不难。只需使用\/捕获令牌即可将匹配的文本转换为$MATCH

:0:
* ^From:.*(SOME EMAIL)
* ^Subject: \/SOME SUBJECT.*
| cat > "/SOME DIRECTORY/$MATCH.txt"

你说你拯救了身体,但你的食谱并没有这样做;它保存了整个消息。 (如果只想要文件中的正文,请添加b标记。)

还要注意我是如何省略命名锁定文件的(让procmail在这种情况下找出一个锁定文件名更有效......虽然如果你覆盖文件,锁定可能并不重要)和.*正则表达式中的冗余From:。 (它在主题中不是多余的,因为你想捕获整个标题。)

如果Subject包含斜杠并且磁盘上没有相应的目录名,那么这当然会失败。

如果您不想覆盖,则默认为追加,因此不需要cat

:0:
* ^From:.*(SOME EMAIL)
* ^Subject: \/SOME SUBJECT.*
/SOME DIRECTORY/$MATCH.txt