我想自动处理我从PayPal获得的电子邮件,用于捐款给我的电子邮件地址。 (通过cronjob和php脚本) 到目前为止,这么好。我做了一次测试捐赠并进行进一步测试,我将这封邮件与Outlook复制到INBOX几次。 一切工作正常与复制邮件(我在检查电子邮件正文中的字符串) 但现在我做了另一个测试捐款,它不工作。 原来,电子邮件正文未正确解析。 我已经在Delphi中尝试了Ararat Synapse,但结果相同。贝宝捐赠邮件奇怪的电子邮件解析错误
从复制邮件正确的电子邮件的正文是这样的:
Guten标签彼得·梅尔! Diese电子邮箱地址电子邮件地址Erhalt einer Spendeüber€1,50 EUR通过Peter Meier([email protected])。 Siekönnendie Transaktionsdetails online abrufen。 Spendendetails Gesamtbetrag:€1,50 EUR
但贝宝的原邮件被解析为
PGh0bWwgPgogICA8aGVhZD4KICAgCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI + CiAgIAkJPG1ldGEgbmFtZT0i dmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MS4wLG1pbmltdW0tc2NhbGU9MS4w LG1heGltdW0tc2NhbGU9MS4wLHdpZHRoPWRldmljZS13aWR0aCxoZWlnaHQ9ZGV2aWNlLWhl aWdodCx0YXJnZXQtZGVuc2l0eWRwaT1kZXZpY2UtZHBpLHVzZX ...
等等,copiedmail 。H tml是3KB,原始是28KB。
我的代码:
$connection = imap_open("{imap.gmx.net:993/imap/ssl}", "[email protected]", "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
}
[PHP IMAP解码消息](可能的重复http://stackoverflow.com/questions/15539902/php -imap-decoding-messages) – NineBerry
除了处理特定PayPal电子邮件的任何问题之外,您应该知道PayPal实际上有几种不同格式的确认电子邮件并定期更改它们 - 新图像,不同布局等。因此,一旦您让它“完美地”工作,需要包含一些错误检查以捕获格式更改并将这些消息保存为新的/更新的处理脚本。 – manassehkatz
@NineBerry从帖子的解决方案给我这个: 注意:未定义的变量:在第34行的C:\ xampp \ htdocs \ test \ stackoverflow.php中的一部分 注意:尝试获取非对象的属性在C: \ xampp \ htdocs \ test \ stackoverflow.php on line 34 注意:未定义的变量:消息在C:\ xampp \ htdocs \ test \ stackoverflow.php上行37 – computerjulian