Paypal捐款邮件

时间:2017-02-22 17:15:22

标签: php imap

我想自动处理从Paypal获得的电子邮件,以便捐赠给我的电子邮件地址。 (通过cronjob和php脚本) 到现在为止还挺好。我做了一个测试捐赠,为了进一步测试,我用Outlook将这封邮件复制到INBOX几次。 复制的邮件(我正在检查电子邮件正文中的字符串)一切正常 但是现在我又做了一次测试捐赠而且没有用。 事实证明,电子邮件正文未被正确解析。 我已经尝试过Delphi中的Ararat Synapse但结果相同。

复制邮件中的正确电子邮件正文如下所示:

  

Guten Tag Peter Meier! Diese电子邮件bestätigtdenErhalt einerSpendeüber€1,50 EUR von Peter Meier(peter.meier@gmx.de)。 SiekönnenmieTransaktionsdetails在线abrufen。 Spendendetails Gesamtbetrag:€1,50 EUR

但Paypal的原始邮件被解析为

  

PGh0bWwgPgogICA8aGVhZD4KICAgCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI + CiAgIAkJPG1ldGEgbmFtZT0i dmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wLG1pbmltdW0tc2NhbGU9MS4w LG1heGltdW0tc2NhbGU9MS4wLHdpZHRoPWRldmljZS13aWR0aCxoZWlnaHQ9ZGV2aWNlLWhl aWdodCx0YXJnZXQtZGVuc2l0eWRwaT1kZXZpY2UtZHBpLHVzZX ...

依此类推,copiedmail.html为3KB,原文为28KB。

我的代码:

$connection = imap_open("{imap.gmx.net:993/imap/ssl}", "peter.meier@gmx.de", "password"); //connect
$count = imap_num_msg($connection); //get E-Mail count in INBOX
for($msgno = 1; $msgno <= $count; $msgno++)  //walk through INBOX mails
{
  $headers = imap_headerinfo($connection, $msgno); //read E-Mail header
  $subject = $headers->subject; //read subject
  //decode subject
  $elements = imap_mime_header_decode($subject);
  $decodedsubject="";
  for ($i=0; $i<count($elements); $i++) 
  {
    $decodedsubject = $decodedsubject.$elements[$i]->text;
  }
  $body = imap_fetchbody ($connection, $msgno, 1); //read body
  echo $body; <--- Here I get long cryptic Text in original Mail
}

1 个答案:

答案 0 :(得分:1)

感谢NineBerry, 我发现paypal使用base64编码为他们的邮件。 所以这个代码

正确解析了正文
<div class="flex">
  <div class="wide">
    <div class="stretchy-wrapper">
      <div>Wide container</div>
    </div>
  </div>
  <div class="tall">
    <div class="stretchy-wrapper">
      <div>Tall container</div>
    </div>
  </div>
</div>

要按建议检查编码,您可以执行以下操作:

$body = imap_fetchbody ($connection, $msgno, 1); //read E-Mail-Body
$body = imap_base64($body);
echo $body;

当然回声功能仅供您检查。 顺便说一句,我将原始问题的片段粘贴到这个在线解码器: https://www.base64decode.org它也有效:)

相关问题