【问题标题】:Sending an email with form variables to an email using wp_mail()使用 wp_mail() 将带有表单变量的电子邮件发送到电子邮件
【发布时间】:2021-05-18 15:54:43
【问题描述】:

我创建了一个 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]

【问题讨论】:

    标签: php wordpress forms wp-mail


    【解决方案1】:

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

    但是,您的表单元素都没有名称!例如这个 &lt;input type="tel" id="tel"&gt; 应该 &lt;input type="tel" id="tel" name="tel"&gt;

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

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

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

    【讨论】:

    • 感谢您的回复。添加名称“组件”并没有解决未定义的索引问题 =) 知道如何解决这个问题吗?
    • 仍然缺少名称。这就是为什么您必须取消注释 IF。修复它,IF 可以保留(它应该保留)并且您不会收到警告,因为索引将存在。您可以使用 isset 来检查其他人,尽管较新版本的 PHP 允许这样编写:$value = $_POST['my-field'] ?? '';
    • 嘿,谢谢。我实际上确实更新了它,只是忘记在 SO 上编辑它。问题是,如果我删除 if 语句,我会收到通知(但我想这没关系,因为刷新时字段为空)。如果我添加 if 语句,通知在我重新加载后就消失了但是......一旦我点击提交,我仍然会收到一个通知(这仍然更好)并且它说:*通知:*输入电子邮件地址的未定义索引。它指向这个$to = $_POST[$email]; //sendto@example.com 有什么想法吗?
    • $email = $_POST['email']没有$email = $_POST[$email];
    • 要明确$_POST['email'] 存在,$_POST[$email] 永远不会存在,因为此时 $email 等于他们输入的电子邮件地址。
    猜你喜欢
    • 2016-09-20
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多