imap中php乱码怎么办

  介绍

这篇文章将为大家详细讲解有关imap中php乱码怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

imap php乱码问题的解决办法:首先打开相应的php文件,然后添加iconv进行字符编码格式转换即可解决乱码问题,其语句如“iconv (& # 39; gb2312 # 39; & # 39; use utf8 # 39;, imap_base64(文本)美元);“。

 imap中php乱码怎么办

<强> php imap/pop3接收邮件类,解决中文乱码

小弟目的想在嵌入式开发板上实现接收邮件,当然谷歌了一下,发现还是有很多实现方法的:php最简单,C座实现效率最高(我是这么感觉),当然也少不了python实现(不过还没动手测试)等等。

今天先介绍一下php接受邮件类,这个类最初是老外Mitul Koradia写的,感觉实现功能也很完整:

该类的主要方法如下:

类receiveMail   {   ...   函数receiveMail(用户名、密码,美元EmailAddress美元$服务器=& # 39;localhost # 39;, $ servertype=& # 39;流行# 39;,$端口=& # 39;110 & # 39;,ssl=false)美元//结构   函数getHeaders(中期美元)//头信息   getTotalMails()函数//把总数从邮箱的未读邮件   getUnreadMails()函数//邮箱的未读邮件   searchUnreadMails()函数//由imap_search方法找到未读邮件的数量   函数GetAttach(中期,路径)美元//得到Atteced文件从邮件   函数getBody(中期美元)//得到消息体   函数deleteMails(中期美元)//删除邮件   close_mailbox()函数//关闭邮箱

不过有些瑕疵,我阅读后稍作修改,主要是邮件头没进行MIME解码,邮件中文内容乱码。

首先关于邮件头的解码过程,Mitul Koradia的处理方法如下:

函数getHeaders(中期美元)//头信息   {   如果(! $ this→marubox)   返回错误;   (mail_header=imap_header美元这→marubox,中期美元);   发送方=mail_header→美元[0];   sender_replyto=mail_header→美元reply_to [0];   如果函数(发送方→美元邮箱)!=& # 39;mailer-daemon& # 39;,,函数(发送方→美元邮箱)!=& # 39;邮政局长# 39;)   {   $ mail_details=阵列(   & # 39;从# 39;=祝辞函数(发送方→美元邮箱)强生# 39;@ # 39;。美元发送方→主机,   & # 39;fromName& # 39;=在发送方→美元个人、   & # 39;主题# 39;=祝辞mail_header→美元,   & # 39;伍仟# 39;=祝辞mail_header→美元解决   );   }   返回mail_details美元;   }

但是返回结果是MIME编码字符,显然不行,于是添加了imap_mime_header_decode方法后就可以了。

函数getHeaders(中期美元)//头信息   {   如果(! $ this→marubox)   返回错误;   (mail_header=imap_header美元这→marubox,中期美元);   发送方=mail_header→美元[0];   sender_replyto=mail_header→美元reply_to [0];   如果函数(发送方→美元邮箱)!=& # 39;mailer-daemon& # 39;,,函数(发送方→美元邮箱)!=& # 39;邮政局长# 39;)   {   $ mail_details=阵列(   & # 39;从# 39;=祝辞函数(发送方→美元邮箱)强生# 39;@ # 39;。美元发送方→主机,   & # 39;fromName& # 39;=祝辞imap_mime_header_decode(发送方→美元个人)[0]→文本,   & # 39;主题# 39;=祝辞imap_mime_header_decode (mail_header→美元主题)[0]→文本,   & # 39;伍仟# 39;=祝辞imap_mime_header_decode (mail_header→美元的toaddress)[0]→文本   );   }   返回mail_details美元;   }

最后关于邮件中文内容乱码的问题,老外肯定不会去考虑啦,其实也是比较简单,添加iconv进行字符编码格式转换即可:

函数get_part(流,msg_number美元,mime_type美元,美元结构=false, $ part_number=false)//得到消息的一部分内部私人使用   {   如果(! $结构){   $结构=imap_fetchstructure(流,msg_number美元);   }   如果美元(结构){   如果(mime_type==这→美元get_mime_type(结构)美元)   {   如果part_number美元(!)   {   $ part_number=?”;   }   (文本=imap_fetchbody美元流,msg_number美元,美元part_number);   如果($结构→编码==3)   {   返回iconv (& # 39; gb2312 # 39; & # 39; use utf8 # 39;, imap_base64(文本)美元);   }   else if($结构→编码==4)   {   返回iconv (& # 39; gb2312 # 39; & # 39; use utf8 # 39;, imap_qprint(文本)美元);   }   其他的   {   返回iconv (& # 39; gb2312 # 39; & # 39; use utf8 # 39;,美元文本);   }   }   如果($结构→类型==1)/*多部分*/{   虽然(列表(指数,sub_structure美元)=每个(结构→美元部分))   {   如果(part_number美元)   {=$ $前缀。& # 39;强生# 39;;   }   $ data=https://www.yisu.com/zixun/$ this -> get_part(流,msg_number美元,美元mime_type, sub_structure美元,美元的前缀。(美元指数+ 1));   如果(元数据)   {   返回元数据;   }   }   }   }   返回错误;   }

imap中php乱码怎么办