PHP Mail功能:不会更改邮件中的显示名称

时间:2014-08-28 07:14:11

标签: php email phpmailer

我目前正在制作一个事件注册表单,用户在其中输入信息,然后表单通过PHPMail发送给我们。

一切正常,我收到了用户的所有输入,但似乎我无法更改已发送邮件的显示名称。

我的邮件代码如下:

    $p_regist="registration<br /><br />";
    $p_receive="mymail@testmail.com";
    $p_sender="mymail@testmail.com";
    $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文件中发送邮件。

如何在电子邮件的标题中包含提交者的全名?

3 个答案:

答案 0 :(得分:1)

您要添加两个From:标题,但只能有一个。

可能完全删除$p_extra并将格式化的发件人标头放入常规$headers

此外,您需要审核代码中的注入漏洞。基本上,任何来自POST的东西都需要经过审查。特别是,请确保您从用户收到的输入中没有换行符或其他恶作剧。有关细节,请参阅例如PHP's mail(): What are potential issues to watch out for?

使用合适的邮件库可能会更好; PHP中的基本功能是丑陋,不安全且难以使用。

答案 1 :(得分:0)

这是因为电子邮件地址是强制性的。 from格式必须为From: Display name <email@address>

这是你的$headers已修复:

$headers .= 'From: Display Name here <you@email.com>'."\r\n";

答案 2 :(得分:0)

您需要发送Headers以及Php mail code

$p_regist="registration<br /><br />";
$p_receive="mymail@testmail.com";
$p_sender="mymail@testmail.com";
$p_subject="Registration".umw($_POST['f_name']).": ".$_POST['f_even'];
$p_subject_user="Register Confirmation: ".$_POST['f_even'];
$header = "From: noreply@example.com\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";