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

时间:2021-02-15 18:32:40

标签: php wordpress forms 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'] not [$email]

1 个答案:

答案 0 :(得分:0)

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

但是,您的表单元素都没有名称!例如这个 <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;