java imap 乱码,如何解决imap php乱码问题

imap php乱码问题的解决方案:首先打开相应的php文件;然后添加iconv进行字符编码格式转换,可以解决乱码问题。它的声明是“iconv(& # 39;gb2312 & # 39,& # 39;utf8 & # 39,IMAP _ base64($ text));”。

推荐:“PHP视频教程”

Php imap/pop3接收邮件类并解决中文乱码

我弟弟想在嵌入式开发板上接收电子邮件。当然,谷歌发现仍然有很多方法可以实现它:php是最简单的,C套接字是最有效的(我觉得是这样),当然,python是必不可少的(但是它还没有被测试过)等等。

今天,让我们首先介绍php的acceptance mail类,它最初是由外国人Mitul Koradia编写的,并且感觉实现功能也是完整的:

该类的主要方法如下:

类接收邮件{...函数接收邮件($用户名,$密码,$电子邮件地址,$邮件服务器= & # 39;本地主机& # 39;,$ servertype = & # 39流行音乐& # 39;,$ port = & # 39110 & # 39;,$ SSL = false)//构造函数getHeaders($mid) //获取邮件头信息函数getTotalMails() //获取邮箱中未读邮件的总数函数GetUnreadMails()//从邮箱中获取未读邮件数函数searchUnreadMails() //通过imap_search方法函数GetAttach查找未读邮件数($mid,$path) //从邮件中获取已格式化文件函数getBody($mid) //获取邮件正文函数删除邮件($mid) //删除邮件函数close _ Mailbox()//关闭邮箱,但存在一些缺陷。我读完之后做了一些修改,主要是因为邮件的标题没有被MIME解码,而且邮件的中文内容是乱码。

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

函数getHeaders($mid) //获取标题信息{if(!)$this-&gt。丸盒)返回假;$ mail _ header = IMAP _ header($ this-& gt。丸盒,$ mid);$sender=$mail_header-&gt。从开始;$ sender _ reply to = $ mail _ header-& gt。回复;if(strtolow ($ sender->;邮箱)!= & # 39;邮件精灵& # 39;&amp。&amp。strtolow($ sender->;邮箱)!= & # 39;邮政局长& # 39;){ $ mail _ details =数组(& # 39;从& # 39;=&gt。strtolow($ sender->;邮箱)。& # 39;@ & # 39;。$sender-&gt。主持人& # 39;fromName & # 39=&gt。$sender-&gt。个人,& # 39;主题& # 39;=&gt。$mail_header-&gt。主题& # 39;到& # 39;=&gt。$mail_header-&gt。地址);}返回$ mail _ details}但是返回的结果是MIME编码的字符,这显然不起作用,所以在添加了imap_mime_header_decode方法之后就可以了。

函数getHeaders($mid) //获取标题信息{if(!)$this-&gt。丸盒)返回假;$ mail _ header = IMAP _ header($ this-& gt。丸盒,$ mid);$sender=$mail_header-&gt。从开始;$ sender _ reply to = $ mail _ header-& gt。回复;if(strtolow ($ sender->;邮箱)!= & # 39;邮件精灵& # 39;&amp。&amp。strtolow($ sender->;邮箱)!= & # 39;邮政局长& # 39;){ $ mail _ details =数组(& # 39;从& # 39;=&gt。strtolow($ sender->;邮箱)。& # 39;@ & # 39;。$sender-&gt。主持人& # 39;fromName & # 39=&gt。IMAP _ mime _ header _ decode($ sender->;个人)->文本& # 39;主题& # 39;=&gt。IMAP _ mime _ header _ decode($ mail _ header->;主题)->。文本& # 39;到& # 39;=&gt。IMAP _ mime _ header _ decode($ mail _ header->;toaddress)->文本);}返回$ mail _ details}最后,外国人绝对不会考虑电子邮件中乱码的中文内容。事实上,它相对简单。添加图标以转换字符编码格式:

函数get_part($stream,$msg_number,$mime_type,$structure = false,$ Part _ number = false)//获取消息的一部分内部专用{ if(!$ structure){ $ structure = IMAP _ fetch structure($ stream,$ msg _ number);} if($ structure){ if($ mime _ type = = $ this-& gt。get_mime_type($structure)){ if(!$零件号){ $零件号= & quot1&quot。;} $text = imap_fetchbody($stream,$msg_number,$ part _ number);if($ structure->;编码== 3) {返回iconv(& # 39;gb2312 & # 39,& # 39;utf8 & # 39,IMAP _ base64($ text));} else if($structure->。编码== 4) {返回iconv(& # 39;gb2312 & # 39,& # 39;utf8 & # 39,IMAP _ qprint($ text));}否则{返回图标(& # 39;gb2312 & # 39,& # 39;utf8 & # 39,$ text);} } if($ structure->;type = = 1){ while(list($ index,$sub_structure) =每个($structure->;零件){ if($ part _ number){ $ prefix = $ part _ number。& # 39;。& # 39;;} $data = $this-&gt。get_part($stream,$msg_number,$mime_type,$sub_structure,$前缀。($ index+1));if($ data){ return $ data;} } }返回false}初级的PHP,我觉得自己还是有很多不懂的地方,希望自己能再接再厉。以上是如何解决imap php乱码问题的细节,更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值