我对此感到非常困惑,我有一封从日志文件生成的电子邮件,它会发送一封电子邮件,其中包含正文中的日志文件内容。
我在一个测试 gmail 帐户上对 imap 的东西和 php 进行了一些测试,使用以下代码我可以毫无问题地看到数百封电子邮件的整个正文:
$mailbox = "xxx@gmail.com";
$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;
}
现在代码可能很乱,我基本上接管了别人的代码并让它为我工作,我添加了 if empty 一个,因为一些身体返回空,一旦我补充说它工作正常。我知道这是由于俄语/法语编码,所以虽然信息显示正常,但俄语/法语字符显示不正确,但至少不是空的
无论如何,基本上我所做的是获取原始电子邮件,将其转发到这个测试帐户,运行该代码,如果我回显 $body,我可以看到每个电子邮件正文。
现在问题发生了,当我收到完全相同的电子邮件时,来自 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 />";
我有点迷茫,希望得到一些指导,所以我不会在新年前失去理智:)
该电子邮件有一堆机密内容,如果有帮助,我可以将其添加到所有内容中, 大多数电子邮件都很大,因此编辑所有机密信息需要很长时间,但如果您要求,可以这样做