电话:13815259105
QQ:19500067
邮箱:huangjing@gggsoft.com
联系:黄 晶
关于接收邮件乱码问题分析    编辑:admin      时间:2013-06-01

在国内主流的邮箱发邮件时基本都会用base64_encode去加密,所以我们在写接收邮件功能的时候去判断邮件标题的数据,去相应的转码即可。

我们先会获取邮件的encoding的值,然后相应转码

if($structure->encoding == 0){
$message = imap_qprint($message);
}else if($structure->encoding == 1){
$message = imap_8bit($message);
}else if($structure->encoding == 2){
$message = imap_binary($message);
}else if($structure->encoding == 3){
$message = imap_base64($message);
}else if($structure->encoding == 4){
$message = imap_qprint($message);
}

然后在获取邮件标题头信息,来判断是否base64转码和与程序编码一致的转码

例如:

$mail_header=imap_header($this->mailbox,$mid);

echo $mail_header->subject;

可能会获取这样的数据:=?gbk?b?ztlkx9k7upbw0ln6yms=?=

分析问号间隔的每段数据,gbk表示这封邮件的编码,b表示需要需要base64解码,ztlkx9k7upbw0ln6yms=表示需要解码的标题内容;

假如我们程序是UTF-8编码,则转码方法如下:

$title = iconv("gbk","utf-8//IGNORE",base64_decode('ztlkx9k7upbw0ln6yms='));
echo $title;

 


转载请注明本站出处:闪际软件-认证流程管理软件
http://www.gggsoft.com/action-desgin_log-id-9.html
© CopyRight 2013-2020   苏州闪际软件有限公司    苏ICP备13025141号   
友情链接:认证流程管理软件 认证机构软件 认证管理软件 快递查询