PHP-imap_fetchbody消息已编码 [英] php - imap_fetchbody message is encoded

查看:349
本文介绍了PHP-imap_fetchbody消息已编码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在构建一个网络应用程序,用户可以在其中查看发送到其帐户的电子邮件。关于他们的邮件的编码,我遇到了一些问题。

I'm building a web app where users will be able to see emails sent to their account. I am having some issues regarding the encoding of their messages.

作为测试,我刚从网站收到一封注册电子邮件。邮件包含HTML。

As a test, I just received a registration email from a website. The mail contained HTML.

它应该看起来像这样:

Thanks for signing up to Virally, we're excited to have you using our product!  
  Start Capturing Leads with Virally!  
  Click here to make your first campaign >>  
  You'll need a digital reward to create a campaign, like an eBook, Whitepaper, Video, free book chapter, Podcast etc. (We can help with this if you don't have anything of your own, just ask)  
  Please hit reply to this email if you'd like some help getting started.   
Thanks,  
 Liam Gooding  liam@virallyapp.com  Virally Co-founder    

这就是我收件箱中的样子;虽然,在我的网站,它看起来是这样的:

That is how it looks in my inbox; although, on my website it looks like this:

VGhhbmtzIGZvciBzaWduaW5nIHVwIHRvIFZpcmFsbHksIHdlJ3JlIGV4Y2l0ZWQgdG8gaGF2ZSB5
b3UgdXNpbmcgb3VyIHByb2R1Y3QhwqAgCiAgU3RhcnQgQ2FwdHVyaW5nIExlYWRzIHdpdGggVmly
YWxseSEgIAogIENsaWNrIGhlcmUgdG8gbWFrZSB5b3VyIGZpcnN0IGNhbXBhaWduICZndDsmZ3Q7
ICAKICBZb3UnbGwgbmVlZCBhIGRpZ2l0YWwgcmV3YXJkIHRvIGNyZWF0ZSBhIGNhbXBhaWduLCBs
aWtlIGFuIGVCb29rLCBXaGl0ZXBhcGVyLCBWaWRlbywgZnJlZSBib29rIGNoYXB0ZXIsIFBvZGNh
c3QgZXRjLiAoV2UgY2FuIGhlbHAgd2l0aCB0aGlzIGlmIHlvdSBkb24ndCBoYXZlIGFueXRoaW5n
IG9mIHlvdXIgb3duLCBqdXN0IGFzaykgIAogIFBsZWFzZSBoaXQgcmVwbHkgdG8gdGhpcyBlbWFp
bCBpZiB5b3UnZCBsaWtlIHNvbWUgaGVscCBnZXR0aW5nIHN0YXJ0ZWQuICAgClRoYW5rcywgIAog
TGlhbSBHb29kaW5nICBsaWFtQHZpcmFsbHlhcHAuY29tICBWaXJhbGx5IENvLWZvdW5kZXIgICAg

这是我的PHP代码:

$openmail = imap_open($dns,$email,$password ) or die("Cannot Connect ".imap_last_error());

if ($openmail) {
  echo  "<div class='noti success'>You have ".imap_num_msg($openmail). " messages in your inbox</div>\n\r";
  $tot=imap_num_msg($openmail);
  for($i=$tot;$i>0;$i--) {

    $header = imap_header($openmail,$i);
    echo "<br>";
    echo $header->Subject." (".$header->Date.")";
    $body = imap_fetchbody($openmail, $i,'1');

    echo "<div class='faq-tile'>$body</div>";
  }
  imap_close($openmail);
}

$ body

推荐答案

中获得的内容在这种情况下,imap_fetchbody 是base64:

$body = imap_fetchbody($openmail, $i,'1');

if (preg_match('/^([a-zA-Z0-9]{76} )+[a-zA-Z0-9]{76}$/', $body)) {
    $body = base64_decode($body);
}

echo "<div class='faq-tile'>$body</div>";

您还应该阅读无法使用IMAP提取纯文本邮件内容

这篇关于PHP-imap_fetchbody消息已编码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆