0

我必须清理一些邮件,以便使用 procmail 仅打印它们的正文:

:0: # printing mail with bb in the subject to bbprinter
* ^Subject:.*bb
| lpr -Pbbprinter

我该怎么做?

欢迎任何想法帮助

4

1 回答 1

1

您的问题在许多方面定义不明确。“干净”是什么意思?“身体”是什么意思?

如果您的意思是,我怎样才能将 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
于 2013-05-16T19:10:59.357 回答