【问题标题】:PHP email is sending twice when form is submitted提交表单时,PHP电子邮件发送两次
【发布时间】:2018-03-26 17:34:35
【问题描述】:

我设置了一个自定义报价功能,当用户点击提交时会向他们发送一封电子邮件。我遇到的问题是,即使您点击“提交”一次,它总是会发送两封电子邮件。我在一个 WordPress 网站上使用它,这个代码是我写的报价插件的一部分。

我设置了一个名为 $testemail 的变量,该变量设置为 1,并且应该在调用 wp_mail 函数时增加 1,但两封电子邮件仍然只显示数字 1,因此第二封电子邮件不会根本不增加它。

这是我发送电子邮件的代码:

$email_array = array($get_option_array['franchise_email'], 
$email_address_sanitize, "info@example.com");
$subject = "Price Quote Submission";
$to = $email_array;
  if (isset($_POST['submit-clicked'])) {
      if ($check_human_clean != 2) {
        echo '<div>';
        echo '<p class="error">Human verfication is incorrect. Please try again.</p>';
        echo '</div>';
      }
      else {
        if (wp_mail($to, $subject, $message)) {
          echo '<div id="dialog" title="Price Quote Submitted">';
          echo 'div id="popmake-233">';
          echo '<p>Your price quote has been sent successfuly. We\'ll be in touch shortly. If you don\'t hear from us, please give us a call directly at (909) 982-9999. Thank you!</p>';
          echo '</div>';
          $testemail++;
        }
        else {
          echo '<p class="error">An error occured while processing your price quote. Please contact the franchise owner at ';
          echo $get_option_array['franchise_phone'];
          echo '</p>';
        }
      }
    }

我读到的所有内容都是代码必须运行两次,但我的 $testemail 变量没有递增,所以我不确定情况是否如此。另外,我正在使用 SendGrid,但我已经尝试关闭 SendGrid,但这并没有解决问题。除此之外,它只是使用wp_mail 默认函数,我相信它使用PHP Mailer。

我是一名初级开发人员,所以我确信我只是忽略了一些东西,但我在这一点上被难住了。任何帮助都会很棒,谢谢。

【问题讨论】:

  • 检查您的日志。你确定你只收到一个请求和一个请求吗? $testemail 是一个请求的局部变量,如果您收到两个请求,您不会看到它增加。
  • 我会按照以下建议将其设为全局变量并再次检查。
  • 全局变量是每个进程的,不是通用的,所以你仍然不确定你是否得到了重复。只有日志才能告诉你。
  • 这里是一个非常业余的问题......我该如何记录呢?
  • error_log 函数是一种快速而肮脏的获取输出的方式。

标签: php wordpress email


【解决方案1】:

如果 $testemail 没有递增,则 WP 中的某些东西可能会分别运行此函数两​​次,因此 $testemail 作为局部变量在第二次运行时不会递增。

以下是一些可能的解决方法:

1) 您可以考虑将 $testemail 设为全局变量。

2) 成功发送电子邮件后,将该事实存储在数据库中。在发送电子邮件之前,请检查数据库以查看电子邮件是否已发送。如果是这样,请不要再次发送电子邮件。

3) 深入了解 WP 两次调用此函数的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 2017-09-26
    • 2015-03-28
    • 2016-07-26
    • 1970-01-01
    • 2021-05-09
    相关资源
    最近更新 更多