[英]How do you send email from IMAP account with PHP?
我在通過PHP / IMAP發送電子郵件時遇到問題 - 我不知道是不是因為:
我的應用程序打開與電子郵件帳戶的IMAP連接以讀取收件箱中的郵件。 它成功地做到了這一點 我遇到的問題是我想從此帳戶發送郵件並將其顯示在發件箱/已發送文件夾中。
據我所知,PHP imap_mail()函數不會以任何方式掛鈎我當前打開的IMAP流。
我的代碼執行時沒有拋出錯誤。 但是,電子郵件永遠不會到達收件人,也不會顯示在我發送的文件夾中。
private function createHeaders() {
return "MIME-Version: 1.0" . "\r\n" .
"Content-type: text/html; charset=iso-8859-1" . "\r\n" .
"From: " . $this->accountEmail . "\r\n";
}
private function notifyAdminForCompleteSet($urlToCompleteSet) {
$message = "
<p>
In order to process the latest records, you must visit
<a href='$urlToCompleteSet'>the website</a> and manually export the set.
</p>
";
try {
imap_mail(
$this->adminEmail,
"Alert: Manual Export of Records Required",
wordwrap($message, 70),
$this->createHeaders()
);
echo(" ---> Admin notified via email!\n");
}
catch (Exception $e) {
throw new Exception("Error in notifyAdminForCompleteSet()");
}
}
我猜我需要手動將郵件復制到IMAP帳戶中......或者這個問題有不同的解決方案嗎?
此外,如果“from”地址中的域與運行此腳本的服務器上的域不同,這是否重要? 我無法解釋為什么郵件永遠不會被發送。
imap_mail
只是sendmail二進制文件的包裝器,就像mail
函數一樣。 您最好通過普通的SMTP方式發送郵件(查看PHPMailer或Swift Mailer ),然后讓您的代碼將消息放入帶有imap_append的Sent文件夾中。
不確定是什么導致發送失敗,但你應該在代碼中檢查imap_send
的布爾返回值。 除此之外,您還需要檢查SMTP服務器日志以獲取任何線索。
已經有一段時間了,但是對於其他人的記錄,你可以通過imap_last_error()獲得IMAP erorr。 這將為您提供上一個問題的錯誤字符串。
檢查您對imap_mail
的調用的返回值。 imap_mail
在失敗時不會拋出na異常,它返回false
。
此外,您必須自己將郵件復制到已發送文件夾, imap_mail
不會為您執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.