如何使用 procmail 保存以电子邮件主题为文件名的电子邮件正文?

How to use procmail to save email body with email subject as the filename?

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

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

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

我觉得这不是一个特别好的主意,但做起来并不难。只需使用 \/ 捕获标记将匹配的文本放入 $MATCH.

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

你说你保存了 body,但你的食谱并没有这样做;它保存了整个消息。 (如果文件中只需要 body,请添加 b 标志。)

另请注意我是如何省略命名锁定文件的(在这种情况下让 Procmail 找出锁定文件名更有效......尽管如果您覆盖文件,锁定可能并不重要)以及 From: 正则表达式中多余的 .* 。 (它在主题中不是多余的,因为您想捕获整个 header。)

如果 Subject 包含一个斜线并且您在磁盘上没有相应的目录名称,这当然会失败。

如果你不想覆盖,默认是追加,所以不需要 cat 或有用。

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