所以我在表单到电子邮件脚本的From:中显示发件人全名时遇到问题。
我有这个:
<?php
if(!$_POST) exit;
if (!defined("PHP_EOL")) define("PHP_EOL", "'r'n");
$name = $_POST['name'];
$comments = $_POST['comments'];
if(trim($name) == '') {
echo '<div class="error_message">Attention! You must enter your name.</div>';
exit();
}
$address = "example@example.com, example@example.com";
$e_subject = '' . $name . ' has confirmed their attendance.';
$e_body = "$name blah blah blah blah" . PHP_EOL . PHP_EOL;
$e_content = "'"$comments'"" . PHP_EOL . PHP_EOL;
$e_reply = "Please do not reply to this email";
$msg = wordwrap( $e_body . $e_content . $e_reply, 70 );
$headers = "From: $name" . PHP_EOL;
$headers .= "MIME-Version: 1.0" . PHP_EOL;
$headers .= "Content-type: text/plain; charset=utf-8" . PHP_EOL;
$headers .= "Content-Transfer-Encoding: quoted-printable" . PHP_EOL;
if(mail($address, $e_subject, $msg, $headers)) {
// Email has sent successfully, echo a success page.
echo "<fieldset>";
echo "<div id='success_page'>";
echo "<h1>Success!</h1>";
echo "<p>Thank you</p>";
echo "</div>";
echo "</fieldset>";
} else {
echo 'ERROR!';
}
如果在名称字段中只输入一个单词/名称,但只要有两个或多个单词,它就会显示(未知发件人),则该方法有效。
我可以把名字分成两个字段,但我真的不想这么做。
我做错了什么?
谢谢!
EMail标头中的From字段在RFC 5322中定义。应该有一个电子邮件地址。当电子邮件地址以逗号分隔时,您可以使用更多的电子邮件地址。如果你想在From Header中显示名称,那么你必须根据提到的RFC来做。由于我还没有阅读完整的RFC,我只能说,这可能是如何工作的,但我认为它将以这种方式工作:
"Name Surname" <email@domain.tld>
这意味着您的代码:
$headers = "From: '"$name'" <$email>" . PHP_EOL;