我尝试使用Zend Framework 1.12从我的POP3 / IMAP帐户下载电子邮件,它运行正常。 QP标题字段将自动解码。但是,当标题字段(来自名称或主题)是base64编码时,如下所示:
=?UTF-8?B?c3DEvsWIYcWl?=
它不会自动base64解码它。不知道为什么。虽然很容易解决这个“我的方式”,但我想做得对。
有人可以推荐一个如何处理base64标头的好方法吗?
非常感谢。
答案 0 :(得分:1)
您可以使用iconv_mime_decode_headers() PHP函数。
$decoded = iconv_mime_decode_headers('Subject: '.$subject, 0, "UTF-8");
var_dump(decoded['Subject']);
注意,您可以将多个标头参数传递给一个函数,方法是用换行符或“\ n”分隔它们。 e.g。
$headers = "Subject: {$subject}\nFrom: {$from}";
$decoded = iconv_mime_decode_headers($headers, 0, "UTF-8");
在这种情况下,您将获得带有解码数据的“Subject”和“From”键的数组。
答案 1 :(得分:0)
mail mime parsers
负责解码邮件标头。网上有开源base64 decoders
,可用于解码这些字符串。