2011-03-15 64 views
4

我试图用获取电子邮件正文的特定部分:imap_fetchbody - 编码人体错误

$message = imap_fetchbody ($imap_stream,$n,1); 

这工作正常使用Outlook,Hotmail的,雅虎等发送的电子邮件但当我尝试获取从黑莓或Andriod的设备发送的电子邮件的主体,该消息被编码和加扰如:

xmb250IHN0eWxlPSdjb2xvcjojRjk3MWIxMDNiMTEyYjExOGI0N2I1MWI1 

虽然体进行编码,报头是好的。 如何解码从Android或Blackberry设备发送的电子邮件的邮件正文?

谢谢

克里斯。

回答

6

您应该可以运行imap_fetchstructure以获取编码值。如果该值等于3,则需要通过imap_base64进行解码。

我用以下之前(不记得,如果它与发送手机邮箱之前测试过,虽然):

$structure = imap_fetchstructure($stream, $msgno); 
$text = imap_fetchbody($stream, $msgno, $partnum); 
if($structure->encoding == 3) { 
    $text = imap_base64($text); 
} else if($structure->encoding == 4) { 
    $text = imap_qprint($text)); 
} 
+0

谢谢。它正在处理一些电子邮件。一些电子邮件编码值是O但仍然被编码。目前我正在详细研究imap_fetchstructure数组。会回到你身边。 – Kit 2011-03-15 11:46:58

+1

已排序。我只需要在数组中为不同的电子邮件客户端使用不同位置的编码值:if($ structure-> parts [0] - > encoding == 3 || $ structure-> encoding == 3) '。现在都在工作。谢谢。 Upvoted。 – Kit 2011-03-15 12:02:06

+0

小心。 $ structure->零件不能存在。使用:if(($ obj_structure-> encoding == 3)|| isset($ obj_structure-> parts)&&($ obj_structure-> parts [0] - > encoding == 3)){ – Jerry 2017-04-03 07:41:53