0

我有一封从 IMAP 帐户中提取的电子邮件。我已经这样编码了:

body = imap.uid_fetch(uid, "BODY[TEXT]")[0].attr["BODY[TEXT]"].force_encoding('UTF-8')

所以现在它看起来像这样:

puts body.inspect => "\n--Apple-Mail-028364EC-0K8B-4FD7-87E8-97C28C324717\nContent-Type: text/plain; charset=\"utf-8\"\nContent-Transfer-Encoding: quoted-printable\n\nHej=20\n\nI m=C3=A5 meget undskylde men jeg vil ikke k=C3=B8be produktet alligevel hvord=\nan g=C3=B8r vi det...=20\n\nHans Nielsen.         =20\nR=C3=B8rgade 65=20\n1234 G=C3=B8rlev\n\n"

我想在我的 Rails 应用程序中显示电子邮件,以便应用程序的用户可以查看电子邮件。但是我该如何清理身体呢?

我想删除这部分:

--Apple-Mail-028364EC-0K8B-4FD7-87E8-97C28C324717
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable

并清理这部分:

Hej=20

I m=C3=A5 meget undskylde men jeg vil ikke k=C3=B8be produktet alligevel hvord=
an g=C3=B8r vi det...=20

Hans Nielsen.         =20
R=C3=B8rgade 65=20
1234 G=C3=B8rlev

这意味着用最初预期的字符替换奇怪的字符。仅供参考,这些是:

=C3=A5å

=C3=B8ø

=20是 ???

=是 ???

如何做到这一点(不只是使用 gsub)?

4

2 回答 2

2

您需要使用 MIME 解析器,它应该负责删除标头并摆脱引用的可打印编码。根据您电子邮件的布局,body[text] 可能会比您想要的更多。您需要下载 BODYSTRUCTURE 并挑选出您想要的部分,或者下载整个消息 (BODY[]) 并使用 MIME 解析器。

于 2013-07-26T16:12:58.763 回答
0

解码结果为:

Hej 

I må meget undskylde men jeg vil ikke købe produktet alligevel hvordan gør vi det... 

Hans Nielsen.          
Rørgade 65 
1234 Gørlev

似乎=is...=20is "\n"

于 2013-07-26T14:27:48.383 回答