使用 wp_mail() 将带有表单变量的电子邮件发送到电子邮件

Sending an email with form variables to an email using wp_mail()

我创建了一个 WP 模板并向其中添加了一个表单。 在表单下方,我添加了 wp_mail() 函数以将用户输入的数据发送到他们的电子邮件。

现在,我注意到:

注意:未定义索引:mypath.

中的名称

欢迎提供解决此问题的任何帮助。

编辑 1: 以通知我必须删除 if 语句。

编辑 2: 这实际上是我拥有的与表单相关的所有代码。我错过了什么吗?我需要在某处添加 add_action() 或类似的东西吗?

代码:


<form id="form" method="post" action="">
    <label for="name">Name:</label>
    <input type="text" id="name" name="name">
    </br>
    <label for="surname">Surname:</label>
    <input type="text" id="surname" name="surname">
    </br>
    <label for="email">Email:</label>
    <input type="email" id="email" name="email">
    </br>
    <label for="tel">Phone number:</label> 
    <input type="tel" id="tel" name="tel">
    </br>
    <input type="submit" value="Submit" name="submit">
</form>

<?php
if(isset($_POST['submit'])) {
    $name = $_POST['name'];
    $surname = $_POST['surname'];
    $email = $_POST['email'];
    $tel = $_POST['tel'];
                    
    $to = $_POST[$email]; //sendto@example.com
    $subject = 'Reservation';
    $body = 'Name: ' . $name .  '\r\n' .
            'Surname: ' . $surname .  '\r\n' .
            'Email ' . $email .  '\r\n' .
            'Phone number: ' . $tel .  '\r\n';
                            
    wp_mail( $to, $subject, $body );
    echo "Sent!";
}
?>


答案

编辑 3: 只是为了说明解决方案是 $to = $_POST['email']; //sendto@example.com 所以 ['email'] 不是 [$email].

if 语句是一个明智的检查 - 在 $_POST 变量中有一些值之前,您不需要该代码 运行。

但是,none 个表单元素有名称!例如这个 <input type="tel" id="tel"> 应该 <input type="tel" id="tel" name="tel">

没有它,你不会得到太多。

PS 查看 PHP heredoc。最后的代码可以更简洁地写成:

    $body = <<< EOT
      Name: $name
      Surname: $surname
      Email: $email
      Phone number: $tel
    EOT;