从表单中的字段到电子邮件(未知发件人)

时间:2012-07-25 12:26:59

标签: php forms

所以我在发件人:从表单到电子邮件脚本中显示发件人全名时遇到了问题。

我有这个:

<?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!';

}

如果在名称字段中只输入一个单词/名称,但只要它们显示的是两个或多个单词(未知发件人),它就有效。

我可以把名字分成两个字段,但我真的不想这样做。

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

电子邮件标题中的起始字段在RFC 5322中定义。应该去一个电子邮件地址。您可以使用逗号分隔的更多电子邮件地址。如果要在From-Header中显示名称,则必须根据提到的RFC执行此操作。由于我还没有阅读完整的RFC,我只能说,这可能如何工作,但我认为它会这样工作:

"Name Surname" <email@domain.tld>

这意味着您的代码:

$headers = "From: \"$name\" <$email>" . PHP_EOL;