当前位置:  开发笔记 > 编程语言 > 正文

解码UTF8电子邮件标头

如何解决《解码UTF8电子邮件标头》经验,为你挑选了2个好方法。

我有一个表单的电子邮件主题:

=?utf-8?B?T3.....?=

电子邮件的正文是utf-8 base64编码 - 并且解码得很好.我目前正在使用Perl的Email :: MIME模块来解码电子邮件.

=?utf-8分隔符的含义是什么?如何从此字符串中提取信息?



1> 1800 INFORMA..:

所述encoded-word令牌(按照RFC 2047)可以发生在某些标头的值.它们解析如下:

=????=

在这种情况下,Charset是UTF-8,编码是B指base64(另一个选项是Q指Quoted Printable).

要阅读它,首先解码base64,然后将其视为UTF-8字符.

另请阅读各种Internet Mail RFC以获取更多详细信息,主要是RFC 2047.

由于您使用的是Perl,因此可以使用Encode :: MIME :: Header:

概要

use Encode qw/encode decode/;
$utf8   = decode('MIME-Header', $header);
$header = encode('MIME-Header', $utf8);

抽象

该模块实现了RFC 2047 Mime Header Encoding.有3个变体编码名称; MIME-Header,MIME-B和MIME-Q.差异如下所述

              decode()          encode()  
MIME-Header   Both B and Q      =?UTF-8?B?....?=  
MIME-B        B only; Q croaks  =?UTF-8?B?....?=  
MIME-Q        Q only; B croaks  =?UTF-8?Q?....?=



2> moritz..:

我认为Encode模块使用编码处理它MIME-Header,所以试试这个:

use Encode qw(decode);
my $decoded = decode("MIME-Header", $encoded);

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有