2012-06-25 72 views
0

由於一些奇怪的原因,如果用戶試圖發送電子郵件給自己,成功功能會運行,但用戶永遠不會收到一封電子郵件。 如果$toAddress$fromAddress相同,則用戶永遠不會收到該電子郵件。如果他們是不同的用戶呢。郵件,無法發送到相同的電子郵件

在這裏閱讀了幾個問題,說如果電子郵件與服務器位於同一個域中,它將被阻止用於垃圾郵件。但用戶的電子郵件與服務器不在同一個域中?正在用我的Gmail帳戶進行測試。 Reply-to不是我實際使用的電子郵件,它只是dumby文本。

$to = $toAddress; 
$subject = 'This is an email'; 
$message = $message; 
$headers = 'From: '. $fromAddress . "\r\n" . 
    'Reply-To:[email protected]' . "\r\n" . 
    'X-Mailer: PHP/' . phpversion() . "\r\n" . 
    'MIME-Version: 1.0' . "\r\n" . 
    'Content-Type: text/html; charset=UTF-8'; 

if(mail($to, $subject, $message, $headers)){ 
    echo '{"status": "success", "senderAddress": "' . $_SERVER['REMOTE_ADDR'] . '", "content": "' . $_POST['toAddress'] . '"}'; 
} else { 
    echo '{"status": "fail", "toAddress": ' . $toAddress . '", "fromAddress": "' . $fromAddress . '"}'; 
} 

回答

0

由於使用Gmail和Hotmail的過濾系統,在使用自己作爲接收者時,它將直接轉化爲Gmail和Hotmail中的垃圾郵件。如果兩個值不同,使用Gmail時,它將進入您的收件箱,而Hotmail仍將其視爲垃圾郵件。

1

排除mail()函數中的頭文件並嘗試使用它。標題正在觸發GMail的過濾系統。如果郵件是從Gmail發送的,則會有一定的基於域密鑰的身份驗證來驗證發件人的身份。

您可能需要創建一個包含以下內容的TXT DNS記錄:

v=spf1 include:_spf.google.com ~all 
在您的DNS服務器

,授權您的域發送電子郵件。

+0

爲什麼會發生這種情況?正如'fromAdress'與'toAddress'不同時,它工作正常。我實際上並沒有代表谷歌發送郵件,郵件來自服務器。 – Bankzilla

+0

http://support.google.com/a/bin/answer.py?hl=zh_CN&answer=174124 對於使用Gmail發送的郵件,使用Gmail驗證發件人的基於域密鑰的驗證。您是否嘗試在標題字段中發送任何內容。這對我很有用 –

+0

不是確切的原因,但你帶領我在賽道上看看爲什麼。我可以從同一個域發送電子郵件,它遇到的唯一問題是如果兩封電子郵件匹配,它會被電子郵件系統過濾掉。雖然它通過Hotmail的,但它會被添加到垃圾箱中。 – Bankzilla