2015-05-03 167 views
0

我不知道這是一個常見的問題,但我似乎無法理解爲什麼發生。 我正在嘗試處理表單並讓它將詳細信息發送到電子郵件。夠簡單。 這是它的PHP代碼。當有人填寫表格時,它會顯示除發件人電子郵件以外的所有內容。它以未知發件人的身份出現。有誰知道我可以修復它? 非常感謝任何花時間看這個的人。聯繫表格不發送發件人電子郵件

<?php 

if($_POST["submit"]) { 
$recipient="[email protected]"; 
$subject="Form to email message"; 
$Name=$_POST["Name"]; 
$Phone=$_POST["Phone"]; 
$senderEmail=$_POST["senderEmail"]; 
$comments=$_POST["comments"]; 

$mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments"; 

mail($recipient, $subject, $mailBody, "From: $Name <$comments>"); 

$thankYou="<p>Thank you! Your message has been sent.</p>"; 
} 

?> 
+0

如果'$ senderEmail'或'$ Name'或其中的任何值包含字符串「未知發件人」那麼顯然這是被髮布到形式的價值。在這種情況下,這個代碼正在做它準備做的事情。 – David

+0

'From'是'$ comments'不應該是'$ senderEmail'嗎? – chris85

+0

@ chris85 - 從它看起來像,這絕對是問題:) –

回答

0

chris85回答在評論的問題:

From$comments它不應該是$senderEmail

但是,這並不那麼簡單。你不能只選擇任何from電子郵件地址,並期望它的工作。如果您試圖欺騙發件人地址,電子郵件客戶端很可能會將您的電子郵件垃圾郵件。

無論何時更改From頭,你也需要改變reply-to頭,你的情況,你應該把From標題爲您的服務器上的電子郵件地址的唯一改變reply-to頭在用戶無論-putted。這樣你的信息更可能不會被垃圾郵件,因爲它看起來不像你想偷偷摸摸。

另一個選擇是使用一個簡單的庫來爲你照顧所有這些。

這裏是一個真正簡單的我寫道:http://geneticcoder.blogspot.com/2014/08/wrapper-for-phps-mail-function.html

+0

我明白你說什麼。我也發現爲什麼它給了我一個空的電子郵件地址,因爲$ Name <$comments>「);是錯誤的,我解決了這個問題,它發送了表單中提供的全部信息,只是發件人地址是未知的,但我可以修復在適當的時間。另一個問題是,當我嘗試使用我的服務器(免費託管)的形式沒有問題。當我嘗試在另一臺服務器上使用它(通過cloudflare運行)它會給我504網關錯誤。爲什麼? – Cerebros

0

看起來標題設置不正確。 嘗試是這樣的:

<?php 

if($_POST["submit"]) { 
    $recipient="[email protected]"; 
    $subject="Form to email message"; 
    $Name=$_POST["Name"]; 
    $Phone=$_POST["Phone"]; 
    $senderEmail=$_POST["senderEmail"]; 
    $comments=$_POST["comments"]; 
    $header = "From: $senderEmail" . "\r\n" . 
    "Reply-To: $senderEmail" . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

    $mailBody="Name: $Name\nPhone: $Phone\nEmail: $senderEmail\n\n$comments"; 

    mail($recipient, $subject, $mailBody, $header); 

    $thankYou="<p>Thank you! Your message has been sent.</p>"; 
} 

?> 

的PHP mail函數的函數引用可以發現here

相關問題