在我的網站上我有一個PHP腳本,可以自動郵寄給我的客戶關於訂單的確認。 我的網站的域名也註冊到了我的網站。 我有很多問題使用mail()函數發送電子郵件到某些電子郵件帳戶......很多我的用戶與我聯繫,說他們從未收到我的自動電子郵件!所以這是一個非常大的問題!共享主機發送的電子郵件被阻止。有沒有辦法避免這種情況?
給我更多問題的帳戶是comcast.net,uol.com,mchsi.com和其他人!我已經聯繫了這些電子郵件服務提供商的支持中心,要求將我的IP從阻止列表中刪除。
電子郵件的標題是這樣的:
$header = "Sender: $from_mail\n";
$header .= "From: Account <$from_mail>\n";
$header .= "Reply-To: Account <$from_mail >\n";
$header .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\n";
$header .= "Mime-Version: 1.0\n";
$header .= "X-Mailer: PHP/".phpversion()."\n";
$body = "\n--$mixed_boundary\n";
.
.
.
.
$body .= "\n\n--$mixed_boundary--";
mail($to, $subject, $body, utf8_encode($header), "-f$from_mail");
有東西,我可以儘量避免這個問題? 有人知道我在哪裏可以知道用於發送電子郵件的服務器的IP地址是什麼,這些電子郵件被認爲是PHP mail()函數?
在此先感謝您的回覆!
嗨,
今天仍然有些電子郵件提供商的服務,如康卡斯特,繼續擋住了我的IP地址,說,我的郵件服務器發送垃圾郵件...我要求從黑名單移除,但他們的系統繼續阻止他們!我不知道還有什麼能做些什麼......我已經按照你的建議和代碼如下所示:
$md5 = md5(date('r', time()));
$mixed_boundary = "PHP-Mixed-$md5";
$alt_boundary = "PHP-Alt-$md5";
$header = "Sender: $from_mail\r\n";
$header .= "Errors-To: $from_mail\r\n";
$header .= "From: account <$from_mail>\r\n";
$header .= "Reply-To: $from_mail\r\n";
$header .= "Content-Type: multipart/mixed; boundary=$mixed_boundary\r\n";
$header .= "Mime-Version: 1.0\r\n";
$header .= "X-Mailer: PHP/".phpversion()."\r\n";
$body = "\n--$mixed_boundary\n";
$body .= "Content-Type: multipart/alternative; boundary=$alt_boundary\n";
.
.
.
.
$body .= "--$mixed_boundary\n";
$body .= "Content-Disposition: attachment filename=\"...\"\n";
$body .= "Content-Type: application/octet-stream; x-unix-mode=0644; name=\"...\"\n";
$body .= "Content-Transfer-Encoding: base64\n";
.
.
.
.
$body .= "\n\n--$mixed_boundary--";
mail($to, $subject, $body, utf8_encode($header), "-f$from_mail");
建議?
再次感謝!
看看mail()函數的PHP文檔,它們的標頭用「\ r \ n」分隔,而不是像你的例子中的「\ n」。可能是規範要求「\ r \ n」,但是您的方法仍然有效,因爲某些郵件服務器在接受方面是自由的。 – Inshallah 2009-08-30 15:09:33
果然,PHP文檔說只是「\ n」不符合RFC 2822(Internet郵件格式) – Inshallah 2009-08-30 15:12:04
,但「\ r \ n」分隔符是用於asp服務器嗎?或不?我認爲PHP服務器使用「\ n」作爲新行字符! – BitDrink 2009-08-30 15:13:16