【问题标题】:Website Booking Form does not send to email using php网站预订表格不使用 php 发送到电子邮件
【发布时间】:2013-12-29 10:14:48
【问题描述】:

好的,我编辑了一些代码,提交按钮执行我想要它执行的操作,即发布我的 php 文件。但是,即使我遇到错误,比如我将必填字段留空,它仍然会提交表单,现在我更改为的新代码是

      onSubmit: function(invalid, event) {
    event.isDefaultPrevented();
    if (invalid) {
} else {
  $.post('save.php', this.$form.serialize(), function(response) {  
    // do something with response
  }, 'json');
}    
        $('#invalid')
          .show()
          .toggleClass('valid', ! invalid)
          .text(invalid ? (invalid +' invalid fields') : 'All good!');
      }
    });

我如何编码,以便它只在没有无效字段时提交我的表单

【问题讨论】:

  • 避免从 mail() 发送邮件。
  • 为什么要避免mail()?如果 php.ini 中没有错误配置,它会很好地工作。一个更有用的提示是避免使用错误抑制@。如果被抑制,OP 如何期望出现错误消息..

标签: php jquery ajax email form-submit


【解决方案1】:

不要使用 php 的 mail() 函数,它只会将您的邮件发送到垃圾邮件。而是使用 SMTP php 邮件功能。

为什么我们应该使用 SMTP 而不是 PHP mail():

SMTP 登录到邮件服务器上的实际帐户,然后通过 SMTP 将邮件发送到另一个邮件服务器。如果邮件服务器配置正确,您的邮件会从邮件服务器上的实际帐户发送,不会被标记为垃圾邮件。

在大多数情况下,使用 mail() 函数发送的

邮件 是使用 sendmail 发送的。没有进行身份验证,如果您在额外的标头中使用“发件人:”,它几乎总是会被标记为垃圾邮件。

这是因为如果您查看 gmail 中的原始电子邮件文件,您将看到已发送的标头。您实际上是从 user@serverhostname.tld 发送,而不是像您告诉邮件功能那样从某人@example.com 发送。 如果您使用 SMTP 并查看原始邮件,则电子邮件实际上是从某人@example.com 发送的

您可以从以下位置下载 SMTP 类:

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html

【讨论】:

    【解决方案2】:

    你试过了吗

    邮件($email_to, $email_subject, $email_message, $headers);

    还在页面顶部声明所有变量

    【讨论】:

    • 我同意。如果我删除这部分脚本 onSubmit,表单发送正常:function(invalid, e) { e.preventDefault(); if (invalid) { alert(invalid +' fields!'); } else { $.post('save.php', this.$form.serialize(), function(response) { // 对响应做一些事情 }, 'json');但是它不会显示我的无效字段并将联系表作为空白发送
    • 你能分享你的完整表单代码和js,这样我就可以测试它了
    • 如果我给你我正在测试的网站链接,你可以在那里查看。 pumzo.com/check
    • 你也可以分享一下php位吗
    • pumzo.com/check/save.php
    【解决方案3】:

    $email 似乎没有被声明

    【讨论】:

    • 当我删除脚本的以下部分 onSubmit 时对另一个用户说:function(invalid, e) { e.preventDefault(); if (invalid) { alert(invalid +' fields!'); } else { $.post('save.php', this.$form.serialize(), function(response) { // 对响应做一些事情 }, 'json');然后表单发送完全清晰,但不会显示我拥有的任何无效字段
    猜你喜欢
    • 2017-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    相关资源
    最近更新 更多