擅长:python、mysql、java
<p>它没有更改,但您正在对头进行变换,以使正确的<code>Content-Type:</code>头不再存在(您还应该保留<code>Mime-Version:</code>和任何其他标准的<code>Content-*</code>头)。在</p>
<p>通过检查邮件客户机中的消息源,您应该看到Procmail或Bash实际上没有改变任何东西。你收到的文本实际上是<code>Administrator System=C3=B3w</code>,但是MIME头会通知你的电子邮件客户端这是<code>Content-Transfer-Encoding: quoted-printable</code>和{<cd6>},因此它知道如何正确解码和显示。在</p>
<p>如果只需要有效载荷,则需要自己对其进行解码,但是为了做到这一点,您需要MIME头中的这些信息,因此在处理消息之前不应该杀死它们(如果有的话)。可能是这样的:</p>
<pre><code>from email.parser import Parser
import sys
message = Parser().parse(sys.stdin)
if message['content-type'].lower().startswith('text/'):
print(message.get_payload(decode=True))
else:
raise DieScreamingInAnguish('aaaargh!') # pseudo-pseudocode
</code></pre>
<p>这是非常简单的,因为它假设(像您当前的,甚至更破碎的解决方案)消息包含一个单一的文本部分。将其扩展到多部分消息在技术上并不困难,但具体如何实现这一点取决于您希望接收的多部分类型以及您希望如何处理有效负载。在</p>
<p>就像在<a href="https://stackoverflow.com/questions/26216214/e-mails-body-format-after-procmail-processing">your previous question</a>中一样,我建议您将更多或全部电子邮件操作移动到Python中,如果您打算使用它的话。Procmail没有明确的MIME支持,因此您必须在Procmail中重新设计所有这些,这既不简单也不特别有效。在</p>