2016-07-25 46 views
2

我使用的是一個基本的腳本:PHP的郵件()「函數不發送1臺& 1,託管服務器上的電子郵件

$recipient = "[email protected]"; 
$sender_name = $_POST['name']; 
$sender_email = $_POST['email']; 
$subject = $_POST['subject']; 
$message = $_POST['message']; 

$headers = "MIME-Version: 1.0"."\r\n"; 
$headers .= "Content-type:text/html; charset=UTF-8"."\r\n"; 
$headers .= "From: {$sender_name} <{$sender_email}>"."\r\n"; 
$headers .= "Reply-to: {$sender_name} <{$sender_email}>"."\r\n"; 

mail($recipient, $subject, $message, $headers); 

..但由於某種原因,我沒有收到任何電子郵件,也沒有任何錯誤根據PHP mail() function not sending email指示。

我認爲這可能是一個服務器問題,但它完全支持1&1 states。在使用收件人,主題和正文之前,我還從此服務器/主機發送了電子郵件,所以我不確定它爲什麼不能正常工作!

UPDATE

發送無頭,即:

mail($recipient, $subject, $message); 

..does工作,因此它似乎是用頭一個問題?

+0

是否配置了您的smtp和pop服務器? –

+0

@MridulKashyap我不知道,但正如我所說 - 它已經工作過,沒有我必須配置它們 –

+0

mail()函數返回什麼?對或錯? –

回答

3

可能有很多原因,例如你應該研究什麼是SPF。

$ sender_email不能是任何地址,例如您不能發送Gmail地址併發送聲稱是該發件人的電子郵件,而無需進行任何身份驗證,則您不能代表該地址發送電子郵件,因爲我可以例如發送電子郵件把你的地址放在你的起始位置,當我不在時(我試圖用簡單的單詞)

你應該在From中使用以@ yourdomain.com結尾的內容,並設置SPF以允許您的服務器的IP爲該域發送電子郵件。或以其他方式通過SMTP發送電子郵件(例如,使用PHPmailer,這非常容易)

+0

啊,這是有道理的感謝信息 –

0

標頭錯誤確實會影響郵件傳遞。例如,如果您發送的電子郵件頭標題錯誤,假設用戶的電子郵件地址爲[email protected],並且他的名字是「用戶用戶」,並且您將電子郵件發送到[email protected],可能會導致電子郵件如果它在服務器上不匹配,則進入垃圾郵件或根本不被接受。

其中之一的Gmail具有與每個電子郵件ID相關聯的名稱。如果您在電子郵件中輸入了錯誤的名稱,則有可能電子郵件可能不會顯示在收件箱中,有時甚至是垃圾郵件。

「但是在我附加的例子中,給出的例子使用了由表單輸入設置的'from'頭文件?」

如果你想讓你的用戶能夠發送電子郵件給你,最好的辦法是使用自己的電子郵件地址作爲發件人的電子郵件。例如。如果您的網站位於website.com,請配置一個類似「[email protected]」的電子郵件,並將您的腳本配置爲使用From標頭,您可以將其發送到您自己的電子郵件中的同一個域名(website.com)或任何您授權的其他電子郵件。您可以在郵件中添加用戶的實際詳細信息。這將確保始終成功發送電子郵件。

相關問題