介绍
这篇文章将为大家详细讲解有关imap中php乱码怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
imap php乱码问题的解决办法:首先打开相应的php文件,然后添加iconv进行字符编码格式转换即可解决乱码问题,其语句如“iconv (& # 39; gb2312 # 39; & # 39; use utf8 # 39;, imap_base64(文本)美元);“。
引用>
<强> 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乱码怎么办