2014-08-28 55 views
0

我目前正在製作一個事件註冊表單,用戶在其中輸入信息,然後表單通過PHPMail將其發送給我們。PHPMail函數:不會更改郵件中的顯示名稱

一切工作正常,我收到用戶的所有輸入,但是,似乎我無法更改發送的郵件的顯示名稱。

我的郵件代碼如下所示:

$p_regist="registration<br /><br />"; 
    $p_receive="[email protected]"; 
    $p_sender="[email protected]"; 
    $p_subject="Registration".umw($_POST['f_name']).": ".$_POST['f_even']; 
    $p_subject_user="Register Confirmation: ".$_POST['f_even']; 
    $p_extra="from: $p_sender "; 
    $headers .= 'From:Display Name here'."\r\n"; 
    mail($p_receive, $p_subject, $p_mail_text, $p_mail_check, $p_extra, $headers) 
     or print "Could not send mail to receiver"; 
    mail($_POST['f_mail'], $p_subject_kunde, $headers, 
     'Thank you for your registration!', $p_mail_text) 
     or print "could not deliver mail"; 
    $p_sent=1; 

我也嘗試發送郵件在一個單獨的PHP文件。

如何在電子郵件的標題中包含提交者的全名?

+0

有些部分丟失,你聲明瞭一堆變量但從未使用它們,並且使用了一大堆你沒有聲明的變量(或者沒有向我們顯示部分代碼)。 – tripleee 2014-08-28 07:30:35

回答

1

你把沿着上Headers兩個From:頭,但有可以只有一個。

大概一起刪除$p_extra,並將格式化的發件人標題放入常規$headers

此外,您需要審覈您的注入漏洞的代碼。基本上,任何來自POST的東西都需要審覈。特別是,確保從用戶接收到的輸入中沒有換行符或其他惡意代碼。有關詳細信息,請參閱PHP's mail(): What are potential issues to watch out for?

你可能會更適合使用合適的郵件庫; PHP中的基本功能很醜陋,不安全並且很難使用。

0

這是因爲電子郵件地址是強制性的。 的從格式必須爲From: Display name <[email protected]>

這裏是你的$headers固定:

$headers .= 'From: Display Name here <[email protected]>'."\r\n"; 
+0

嗨,謝謝! 我已經設置了郵件,但它仍然不會更改郵件中的顯示名稱 – 2014-08-28 07:21:27

0

你需要與你的Php mail code

$p_regist="registration<br /><br />"; 
$p_receive="[email protected]"; 
$p_sender="[email protected]"; 
$p_subject="Registration".umw($_POST['f_name']).": ".$_POST['f_even']; 
$p_subject_user="Register Confirmation: ".$_POST['f_even']; 
$header = "From: [email protected]\r\n"; 
$header.= "MIME-Version: 1.0\r\n"; 
$header.= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$header.= "X-Priority: 1\r\n";