2012-12-30 138 views
0

我真的很困惑,我有一个电子邮件从日志文件生成,它发送一个电子邮件与正文中的日志文件的内容。imap_fetch返回垃圾

我做了一些测试,进出口新的IMAP一般的东西,PHP在测试Gmail帐户,用下面的代码我可以看到几百封邮件的整个身体没有问题:

$mailbox = "[email protected]"; 
$mailboxPassword = "xxxx"; 

$mailbox = imap_open("{imap.gmail.com:993/imap/ssl}INBOX", $mailbox, $mailboxPassword); 

$mail = imap_search($mailbox,'ALL'); 

if(empty($mail)) die('No unread emails found!'); 

foreach ($mail as $key => $val) 
{ 

// Retrieving message headers 
$headers = imap_headerinfo($mailbox, $val); 

// Retrieving subject 
$subject = $headers->subject; 

PS我可呼应主题,所有返回精细

mb_internal_encoding("UTF-8"); 
$subject = mb_decode_mimeheader(str_replace('_', ' ', $subject)); 

$body_pre = imap_fetchbody($mailbox, $val, 1); 
$body = $body_pre ? imap_qprint(imap_fetchbody($mailbox, $val, 2)) : imap_qprint(imap_fetchbody($mailbox, $val, 1)); 

if (empty($body)) 
    { 
    $body = $body_pre; 
    } 

现在代码可能是凌乱的,我基本上接手别人的代码,并使其为我工作,我加入了,如果空单,因为一些人体的的返航空,一旦我补充说,它工作正常。我知道它是由于俄罗斯/法国编码,所以虽然信息显示罚款俄罗斯/法国字符不正确显示,但至少不是空的

无论如何,基本上我所做的是采取原来的电子邮件,转发到这个测试帐户,运行该代码,如果我呼应$身体,我可以看到每个电子邮件正文。

现在问题发生时,我采取了完全相同的电子邮件,所有电子邮件日志从基本上发送作为电子邮件的txt文件,但当我在收件箱中运行相同的查询基本上只有差异,他们有FW:在主题嗯,这是什么体输出为:

SE0yIENyYXNoIExvZyBDb250ZW50cyBCZWxvdzo8YnIgLz48YnIgLz5Vc2VyIEVtYWlsOiBBbm9u LiAtIE5vdCBTdXBwbGllZDxhbm9uQGhvbGRlbW1hbmFnZXIuY29tPjxiciAvPkJ1aWxkIEluZm86 IDIuMC4wLjc2NjU8YnIgLz5Vc2VyIERlc2NyaXB0aW9uOiBOL0E8YnIgLz48YnIgLz5Mb2cgRmls ZSBDb250ZW50czogPGJyIC8 + PGJyIC8 + MDE6MTI6MTMuMTEwIFtNYWluOjEgLSBVbml0eUJvb3Rz dHJhcHBlci5SdW5dIDxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX18gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgICAgICAgICAg ICAgICAgICggICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8IHwgLi0uICAgIF9fXyAuLS4gLi0uICAgICAuLS0uICAg IDxiciAvPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHwvICAgXCAgKCAgICkgICAn

而且body_pre呼应的空

我试图改变这个也和呼应所有这些,他们都显示为空白

$body_pre0 = imap_fetchbody($mailbox, $val); 
    $body_pre = imap_fetchbody($mailbox, $val, 1); 
    $body_pre1 = imap_fetchbody($mailbox, $val, 1.1); 
    $body_pre2 = imap_fetchbody($mailbox, $val, 1.2); 
    $body_pre3 = imap_fetchbody($mailbox, $val, 2); 
    $body_pre4 = imap_fetchbody($mailbox, $val, 2.0); 
    $body_pre5 = imap_fetchbody($mailbox, $val, 2.1); 
    $body_pre6 = imap_fetchbody($mailbox, $val, 2.2); 
    $body_pre7 = imap_fetchbody($mailbox, $val, 2.3); 
    echo "Body 0: <br /><br /><br />" . $body_pre0 . "<br />"; 
    echo "Body 1: <br /><br /><br />" . $body_pre . "<br />"; 
    echo "Body 1.1: <br /><br /><br />" . $body_pre1 . "<br />"; 
    echo "Body 1.2: <br /><br /><br />" . $body_pre2 . "<br />"; 
    echo "Body 2: <br /><br /><br />" . $body_pre3 . "<br />"; 
    echo "Body 2.0: <br /><br /><br />" . $body_pre4 . "<br />"; 
    echo "Body 2.1: <br /><br /><br />" . $body_pre5 . "<br />"; 
    echo "Body 2.2: <br /><br /><br />" . $body_pre6 . "<br />"; 
    echo "Body 2.3: <br /><br /><br />" . $body_pre7 . "<br />"; 

我是个有点失落,很想一点指导,所以我不新年前失去我的心:)

电子邮件有一堆机密的东西,我可以用所有的冲裁添加它如果它有帮助,但我认为,因为转发电子邮件的作品,而不是原来的可能一些编码类型问题或明显的东西,但让我知道如果添加,有助于,大多数电子邮件是巨大的,所以它将需要很长时间来编辑所有机密信息但可以做,如果你请

回答

2

这看起来不像垃圾给我...它看起来像base64编码html ...

In [4]: print base64.b64decode(corpus) 
HM2 Crash Log Contents Below:<br /><br />User Email: Anon. - Not Supplied<[email protected]><br />Build Info: 2.0.0.7665<br />User Description: N/A<br /><br />Log File Contents: <br /><br />01:12:13.110 [Main:1 - UnityBootstrapper.Run] <br /> 
          ___        <br /> 
          ( )        <br /> 
          | | .-. ___ .-. .-.  .--. <br /> 
          | |/ \ ( ) ' 
+0

阿哈看起来像是在某处,但我仍然不能得到我需要的输出,我试图编辑它到这个: $ body = $ body_pre?imap_base64(imap_fetchbody($ mailbox,$ val,2)):imap_base64(imap_fetchbody($ mailbox,$ val,1)); 但同样的结果? – user1547410

+0

好吧,我剥去了qprint线,只是做到了这一点,它的工作,谢谢你的提示 $ body = imap_fetchbody($ mailbox,$ val,1); $ body = base64_decode($ body); – user1547410