我已经使用imap_fetchbody()读取了php中的邮件,并使用imap_qprint()对其进行解码。
$body = imap_fetchbody($mbox, $no, 1);
$body = imap_qprint($body);
但原始邮件和输出邮件之间存在差异
原邮件:
纯文本
这是要检查的测试邮件
第一个第二个第三个第四个第五个第六个家
这是黄色背景
测试报价
谢谢Hiren Manek Bhuved Solutions
输出邮件
纯文本
这是要检查的测试邮件
第一个第二个第三个第四个第五个第六个家
这是黄色背景
网址:http://bizved.com
测试 quote
谢谢 HirenManek Bhuved Solutions
任何人都可以提供解决方案吗? 提前谢谢。
答案 0 :(得分:0)
我总是和imaps有同样的问题。除了你可能想尝试一下之外我不保证:
function utf8_imap_header_decode($str)
{
$tmp = imap_mime_header_decode($str);
if (!mb_check_encoding($tmp[0]->text, 'UTF-8'))
return utf8_encode($tmp[0]->text);
return $tmp[0]->text;
}
function utf8_imap_body_decode($str)
{
return utf8_encode(quoted_printable_decode($str));
}
答案 1 :(得分:0)
我已经制作了以下解决方案,因为邮件标题已经是它的字符集。
$st = imap_fetchstructure($mbox, $no);
$part = $st->parts[$partno];
$body = imap_fetchbody($mbox, $no, $partno);
$body = imap_qprint($body);
$charset = 'UTF-8';
if(!empty($part->parameters)){
for ($k = 0, $l = count($part->parameters); $k < $l; $k++) {
$attribute = $part->parameters[$k];
if($attribute->attribute == 'CHARSET'){
$charset = $attribute->value;
}
}
}
//echo $charset;
$bodytext = mb_convert_encoding($body,'UTF-8',$charset);
这不是完整的解决方案。它仅适用于字符编码。 Mail对于纯文本,html文本,附件等具有不同的部分,因为每种类型都应该有不同的处理方式。