2011-06-27 34 views
2

我使用PHP的郵件()函數,並注意到我的郵件被顯示從'我的網站'在我的收件箱中發送,但是當我點擊實際的電子郵件時顯示它從[email protected]發送。發送郵件時從字段PHP()

理想情況下,我想讓它說是從'我的網站'發送的,但回覆郵件是'[email protected]',並且沒有對@ sitename.localdomain發表任何評論。

$to = trim(strtolower($_POST['to'])); 
$from = trim($_POST['from']); 
$message = trim($_POST['message']); 

$subject = $from . ' has shared a link with you'; 
$headers = 'From: My Website' . "\r\n" . 
     'Reply-To:' . $to . "\r\n" . 
     'X-Mailer: PHP/'; 


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

這是我需要在Apache中修復的問題,還是我可以在PHP中修改頭文件?

回答

3

試試這個:

$to = trim(strtolower($_POST['to'])); 
$from = trim($_POST['from']); 
$message = trim($_POST['message']); 

$subject = $from . ' has shared a link with you'; 
$headers = 'From: My Website <[email protected]>' . "\r\n" . // <- change your email here 
     'Reply-To:' . $to . "\r\n" . 
     'X-Mailer: PHP/'; 


mail($to, $subject, $message, $headers); 
+0

哇,這很快!謝謝,這正是我想要做的。 :) –

1

答問#1包含一個嚴重的安全漏洞 -

$to = trim(strtolower($_POST['to'])); 

將允許攻擊者使用你的網站,電子郵件任意垃圾郵件和您的網站將阻止大多數搜索引擎。 見 https://www.owasp.org/index.php/Top_10_2010-A1

我的建議是

  • 消毒,並從領域
  • 永遠不中後複製郵件到輸出,除非仔細消毒。