我无法获取我在输入值中键入的内容

I can't get what I type in the input value

各位,我有一个无聊的问题。
我有一个联系表格,当我发送联系电子邮件时,电子邮件甚至到达了,但是除了消息之外,输入的值没有被传递。

我收到这样的消息:

联系网站

Name:
Email:
Message: (here I get what I write in the message input)

但是,我在姓名、电子邮件和主题中输入的内容没有收到,显示为空白。
有人可以帮我吗?

这是我的表单代码:

<form id="contactform" name="contactform" action="email.php" method="POST" >
    <div class="row form-group">
        <div class="col-md-12">
            <!-- <label for="fname">First Name</label> -->
            <input type="text" id="name" class="form-control" placeholder="Nome" required>
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <!-- <label for="email">Email</label> -->
            <input type="email" id="email" class="form-control" placeholder="E-mail" required>
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <!-- <label for="subject">Subject</label> -->
            <input type="text" id="subject" class="form-control" placeholder="Assunto">
        </div>
    </div>

    <div class="row form-group">
        <div class="col-md-12">
            <!-- <label for="message">Message</label> -->
            <textarea name="message" id="message" cols="30" rows="10" class="form-control" placeholder="Mensagem" required></textarea>
        </div>
    </div>
    <div class="form-group">
        <input id="submit" name="submit" type="submit" value="Envie sua mensagem" class="btn btn-primary">
    </div>
</form>

这是我的 PHPMailer 代码:

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require_once 'vendor/autoload.php';

if (isset($_POST) && !empty($_POST)){
 try {
    $mail = new PHPMailer();
    //Server settings
    $mail->SMTPDebug = 0;
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'conta***@gmail.com';
    $mail->Password = '(my supa password)';
    $mail->SMTPSecure = 'tls';
    $mail->Port = 587;

    //Recipients
    $mail->setFrom('lv***@gmail.com', 'Leo');
    $mail->addAddress('lv***@gmail.com', 'Leo');

    $mensagem = "<strong>Contato site</strong><br><br>";
    $mensagem .= "<strong>Nome:</strong> " . $_POST['name'] . "<br>";
    $mensagem .= "<strong>E-mail:</strong> " . $_POST['email'] . "<br>";
    $mensagem .= "<strong>Mensagem: </strong> " . $_POST['message'] . "<br>";

    //Content
    $mail->isHTML(true);
    $mail->Subject = $_POST['subject'];
    $mail->Body    = nl2br($mensagem);
    //$mail->AltBody = $mensagem;

    if($mail->send()){
        $mail->ClearAllRecipients();
        echo json_encode(array('status' => 'OK', 'mensagem' => 'E-mail enviado com sucesso!'));
        header('Location: /agradecimentos.php');
    }else{
        $mail->ClearAllRecipients();
        echo json_encode(array('status' => 'ERRO', 'mensagem' => $mail->ErrorInfo));
        header('Location: /error.php');
    }

} catch (Exception $e) {
    $mail->ClearAllRecipients();
    echo json_encode(array('status' => 'ERRO', 'mensagem' => $mail->ErrorInfo));
    header('Location: /error.php');
  }
}

我该怎么做才能解决这个问题?

"message" 是唯一带有 name:

的表单元素
<textarea name="message" id="message" cols="30" rows="10" class="form-control" placeholder="Mensagem" required></textarea>

所以它是唯一一个被发送到服务器的。将 names 也给你的其他表单元素:

<input type="text" name="name" id="name" class="form-control" placeholder="Nome" required>
... etc.

name 必须与您用来在服务器上获取值的密钥相匹配:

$_POST['name']

替换以下行

<input type="text" id="name" class="form-control" placeholder="Nome" required>
<input type="email" id="email" class="form-control" placeholder="E-mail" required>
<input type="text" id="subject" class="form-control" placeholder="Assunto">

<input type="text" name="name" id="name" class="form-control" placeholder="Nome" required>
<input type="text" name="email" id="email" class="form-control" placeholder="E-mail" required>
<input type="text" name="subject" id="subject" class="form-control" placeholder="Assunto">