我目前正在制作一个事件注册表单,用户在其中输入信息,然后表单通过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文件中发送邮件。
如何在电子邮件的标题中包含提交者的全名?
答案 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";