在正文中显示姓名和电话号码,并回复发件人


Showing name and phone number in body with reply to sender

我是PHP新手。我创建了一个联系人表单,其中包括对发件人的回复。问题是当提交表单时,发件人的姓名和电话号码没有显示在电子邮件中。

我如何在电子邮件中包含发件人的姓名和电话号码,例如在签名字段中,或者使这些信息显示的最佳方式是什么?

这是我到目前为止的代码:

<?php
if (isset($_POST["submit"])) {
    $name = $_POST['name'];
    $email = $_POST['email'];
    $number = $_POST['number'];
    $message = $_POST['message'];
    $to = 'email@example.com'; 
    $subject = 'A new message via contact form';
    $headers = 'Reply-To:'. $email . "'r'n" .
                'X-Mailer: PHP/' . phpversion();
    // Check if name has been entered
    if (!$_POST['name']) {
        $errName = 'Your full name is required.';
    }
    // Check if email has been entered and is valid
    if (!$_POST['email'] || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        $errEmail = 'Your email address is required.';
    }
    //Check if number has been entered
    if (!$_POST['number']) {
        $errNumber = 'Your phone number is required.';
    }       
    //Check if message has been entered
    if (!$_POST['message']) {
        $errMessage = 'Please provide your message.';
    }
    // If there are no errors, send the email
    if (!$errName && !$errEmail && !$errMessage && !$errNumber) {
        if (mail($to, $subject, $message, $headers, "From: " . $name)) {
            $result='<div class="alert alert-success">Thank you for your interest! You will be contacted within 24 hours.</div>';
        } else {
            $result='<div class="alert alert-danger">We apologize! An error has ocurred. Call us on +47 XX XXX XX</div>';
        }
    }
        }
 ?>

在$message中添加$name和$number。如:

$message .= "'r'n$name'r'n$number";

编辑:澄清一下,这个回答解决了电话号码和姓名没有出现在电子邮件正文中的问题。如果这不是真正的问题,我想我误解了问题。

编辑2:正如Fred -ii指出的,头文件有一个问题。在第四个参数中包含"From:",而不是作为第五个参数添加。From:还必须包含电子邮件地址

要用php发送值,必须设置一个会话。在此会话中,您的值将与名称一起发送。如果声明要保存的名称,它将记住这一点。之后,获取信息的页面可以通过POST或GET来使用它。

Add this line to the top of the page:
<?php session_start();
$_SESSION["name"] = $name;
$_SESSION["email"] = $email;
$_SESSION["number"] = $number;
$_SESSION["message"] = $message;
?>

如果这不是你需要的,那么我有这个解决方案:只需添加:

 . $number

$name后的if语句表示如果没有错误邮件发送

编辑:我建议igorshmigor答案,因为电话号码正在进入POST但没有在邮件官方POST中声明