2017-08-31 77 views
0

我使用的procmail保存电子邮件的身体,这样的事情:如何使用procmail保存邮件正文作为文件名?

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

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

回答

0

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

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

你说你救了身体,但你的食谱不这样做;它保存了整个消息。 (如果只需要文件中的主体,请添加一个b标志。)

另请注意,我如何省略指定的锁定文件(在此场景中让Procmail找出锁定文件名更为有效......虽然锁定如果您覆盖文件,则可能没有多大关系)以及From:正则表达式中多余的.*。 (它在主题中没有多余,因为您想要捕获整个标题。)

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

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

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

百分号没有元字符含义,因此不需要反斜杠,顺便说一下。 – tripleee

+0

感谢您的答案兄弟! – ywu

+0

我尝试了一些其他的组合,现在觉得我很好。 – ywu

相关问题