正确解码邮件主体(imap)

时间:2018-02-02 09:40:51

标签: php imap

我正在阅读邮件并将其内容存储到文件中。

它一般都在工作,但我有一些邮件包含以下标题:

Content-Type:text / html;字符集= “UTF-8” Content-Transfer-Encoding:base64

mb_detect_encoding($message)

返回ASCII。

当我尝试阅读它并将内容写入文件时,我会得到神秘的文字。你能帮我吗?我尝试过任何我知道的编码。输出总是空的或神秘的。

我的代码:

$message = imap_fetchbody($imap,$mail,1);
$message = utf8_encode(imap_base64($message));

我尝试了不同的编码方法:

$message = utf8_encode(imap_base64($message));
//cryptic output
$message = trim(utf8_encode(quoted_printable_decode($message)));
//cryptic output
$message = imap_base64($message);
//empty output
$message = imap_binary($message);
//cryptic output
$message = imap_8bit($message);
//cryptic output
$message = utf8_encode(quoted_printable_decode(imap_base64($message)));
//empty output
$message = trim(utf8_encode(quoted_printable_decode(imap_qprint($message))));
//cryptic output

但我除了神秘的输出外什么都没有:

hyemVleGRiMXJ6ZWRlXw0KQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9InV0Zi04Ig0KQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0DQoNClBHaDBiV3dnZUcxc2JuTTZka

1 个答案:

答案 0 :(得分:0)

经过大量时间的烧毁,我终于做到了。

问题是,邮件标题也被写入邮件正文。我不知道为什么,但我所要做的就是删除邮件正文(substr)中的邮件头,然后用$message = utf8_encode(imap_base64($message));解码它