使用imap在php中读取邮件
我用php和imap_fetchbody阅读了这封邮件,并用imap_qprint对其进行了解码使用imap在php中读取邮件,php,email,imap,Php,Email,Imap,我用php和imap_fetchbody阅读了这封邮件,并用imap_qprint对其进行了解码 $body = imap_fetchbody($mbox, $no, 1); $body = imap_qprint($body); 但原始邮件和输出邮件之间存在差异 原件: 纯文本 这是一封要检查的测试邮件 第一第二第三第四第五第六家 这是黄色背景 网站: 报价测试 感谢Hiren Manek Bhuved Solutions 输出邮件 纯文本 这是一封要检查的测试邮件 第一第二第三第四第五第六
$body = imap_fetchbody($mbox, $no, 1);
$body = imap_qprint($body);
但原始邮件和输出邮件之间存在差异
原件:
纯文本
这是一封要检查的测试邮件
第一第二第三第四第五第六家
这是黄色背景
网站:
报价测试
感谢Hiren Manek Bhuved Solutions
输出邮件
纯文本
这是一封要检查的测试邮件
第一第二第三第四第五第六家
这是黄色背景
网站:�http://bizved.com
测试�引述
多谢各位�Hiren Manek Bhuved解决方案
有人能给出解决方案吗?
提前谢谢。我在使用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));
}
我已经将下面的解决方案作为邮件标题设置为其字符集
$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);
这不是完整的解决方案。它只用于字符编码。邮件的纯文本、html文本、附件等有不同的部分。因此,对于每种类型,您应该有不同的处理方式。在显示电子邮件时,您需要注意电子邮件的字符编码。谢谢hakre。我已经找到了解决这个问题的办法。我有字符编码错误尝试。管道或获取电子邮件,登录到MySQL,并保存附件。