擅长:python、mysql、java
<p>这是一个<a href="https://en.wikipedia.org/wiki/MIME" rel="nofollow">MIME</a>消息—它不是在RFC822上指定的,而是在较新的2045-2047上指定的。你知道吗</p>
<p>绝大多数现代电子邮件都在某种程度上使用MIME,所以你肯定应该支持它。你知道吗</p>
<p>与此消息特别相关的是rfc247,它指定了<code>Encoded-Word</code>。有一个<a href="https://en.wikipedia.org/wiki/MIME#Encoded-Word" rel="nofollow">good overview on wikipedia</a>,我将部分转录:</p>
<blockquote>
<p>The form is: "=?charset?encoding?encoded text?=".</p>
<p>encoding can be either "Q" denoting Q-encoding that is similar to the quoted-printable encoding, or "B" denoting base64 encoding.</p>
</blockquote>
<p>因此,对于这个特定的消息,您有一个Base64编码的(<code>B</code>)<code>utf-8</code>编码文本。实际的消息在<code>B?</code>之后开始,而不是在第二行</em>上。你知道吗</p>
<p>下面是一些简单的python代码来处理所有这些:</p>
<pre><code>if body.startswith("=?"):
i1= body.index("?")
i2= body.index("?", i1+1)
i3= i2+2
encoding= body[i1+1:i2]
assert body[i2:i3]=="?B" #don't handle Q format, it's not commonly used
body= base64.b64decode(body[i3+1:]).decode(encoding)
</code></pre>