我必须清理一些邮件,以便使用 procmail 只打印它们的正文:
:0: # printing mail with bb in the subject to bbprinter
* ^Subject:.*bb
| lpr -Pbbprinter
我应该怎么做?
欢迎任何想法帮助
最佳答案
您的问题在很多方面都没有明确定义。 “干净”是什么意思? “ body ”是什么意思?
如果你的意思是,我怎样才能将 RFC5322 正文而不是 header 发送到打印机,这很简单:
:0b
* ^Subject:.*bb
| lpr -Pbbprinter
请注意 :0
之后的 b
标志,它将操作的范围限制为仅主体。
但是对于 MIME,您实际上通常不需要 RFC5322 正文(即最后一个标题行之后的所有内容),而只是 MIME 多部分消息中的一部分。您需要对要提取的部分进行一些分析,但如果您有分析,那仍然很容易:
:0
* ^Subject:.*bb
| parse-out-preferred-mime-body-part | lpr -Pbbprinter
(我们在这里不使用 :0b
,因为适当的 MIME 解析器也需要访问顶级 RFC5322 header 。)
如果您所说的“干净”是其他意思,或者另外,您将必须澄清您的问题,但总体思路类似于
:0
* ^Subject:.*bb
| cleanupbody | lpr -Pbbprinter
哪里 cleanupbody
可以执行任何你所说的“清理”(抹掉脏话?修复常见的拼写错误?或多或少相同的事情?)
最后,总结一下,您基本上可以通过管道传输到任何复杂的 shell 脚本(尽管当它超过几行时,您可能最好将其全部或部分移动到一个单独的脚本中,也许有自己的测试套件)。
:0
* ^Subject:.*bb
| parse-out-preferred-mime-body-part | \
sed -e 's/grammer/grammar/g' -e 's/seperate/separate/g' \
-e 's/definately/definitely/g' | \
lpr -Pbbprinter
关于linux - 在 procmail 进程之后/之前清理文本邮件以便打印该邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16416863/