2
我正在編寫腳本來閱讀電子郵件並根據TO地址將其分發到不同的電子郵件地址。所有的電子郵件都來自一個地址,但我似乎無法弄清楚如何轉發電子郵件,或創建一個新的電子郵件,幷包括所有相關的消息主體。如何轉發PHP和IMAP下載的電子郵件?
現在我正在使用IMAP下載電子郵件並使用imap_fetchbody獲取電子郵件內容;
$email_body = imap_fetchbody($imapconnex, $msgnumber, 1);
一些電子郵件正文顯示不正確,以及其他含有短行,並在最後一個=
符號,導致內容無法正確顯示。另外,我隨機看到隨機打印在我的電子郵件正文中的隨機A0
。
我的計劃是使用PHP的mail()函數將電子郵件發送到我想要的地方,並將發件人地址更改爲真實發件人地址。這將符合我的需求,但我似乎無法弄清楚如何檢索正確的身體,格式化併發送它。
這裏是我的代碼,我使用發送電子郵件:
$header = imap_fetch_overview($imapconnex, $search[$i]);
$email_subject = $header[0]->subject;
$email_head = imap_fetchbody($imapconnex, $search[$i], 0);
$email_body = imap_fetchbody($imapconnex, $search[$i], 1);
mail("[email protected]", $email_subject, $email_body, $email_head);
的頭似乎被轉發罰款,但該消息的主體仍然=
和A0
符號顯示。
這聽起來像你複製的原始郵件的身體進入一個新的郵件,但你缺少的頭,'內容傳輸Encoding'這將導致'='和' A0'你看到的症狀。如果您重新發送郵件,則應該複製大部分(如果不是全部)原始郵件的標題。如果您正在轉發,則應將原始郵件原封不動地包含在新郵件中作爲MIME正文部分。 – Celada
感謝您的幫助。這對於內容傳輸編碼很有意思。 –
我已經修復了我的代碼的頭文件(謝謝Celada),但我仍然遇到顯示'='和'A0'的問題。我注意到,使用我的代碼,我沒有在原始頭文件中獲得「Content-Transfer-Encoding」。 –