我必须清理一些邮件,以便使用 procmail 仅打印它们的正文:
:0: # printing mail with bb in the subject to bbprinter
* ^Subject:.*bb
| lpr -Pbbprinter
我该怎么做?
欢迎任何想法帮助
您的问题在许多方面定义不明确。“干净”是什么意思?“身体”是什么意思?
如果您的意思是,我怎样才能将 RFC5322 正文而不是标头发送到打印机,这很容易:
:0b
* ^Subject:.*bb
| lpr -Pbbprinter
注意b
后面的标志:0
,它将动作的范围限制在正文中。
但是对于 MIME,您通常实际上并不需要 RFC5322 正文(即最后一个标题行之后的所有内容),而是只需要 MIME 多部分消息的一部分。您需要对要提取的部分进行一些分析,但如果有,它仍然很容易:
:0
* ^Subject:.*bb
| parse-out-preferred-mime-body-part | lpr -Pbbprinter
(我们不在:0b
这里使用,因为适当的 MIME 解析器也需要访问顶级 RFC5322 标头。)
如果“干净”是指其他意思,或者另外,您必须澄清您的问题,但总体思路类似于
: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