我想自動處理我從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