【问题标题】:small problem using PHP mail function with jQuery使用带有 jQ​​uery 的 PHP 邮件功能的小问题
【发布时间】:2011-05-24 00:18:30
【问题描述】:

使用 PHP 邮件功能和 jQuery 提交电子邮件联系表单时出现以下错误:

SMTP 服务器响应:554 邮件被拒绝,因为它在第 26 行的 mail.php 中包含禁止的病毒或垃圾邮件内容

这是我用于 PHP 的代码:

   $mailTo = "info@***.com";
   $mailFrom = $_POST['email'];
   $subject = "RFP Inquiry";
   $message = $_POST['message'];


   mail($mailTo, $subject, $message, "From: ".$mailFrom);

这是我用于 jQuery AJAX 调用的代码:

    //var name = $("#contactname").val();
var email = $("#email").val();
var message = $("#subject").val();
//var age = $("#message").val();
   var datastr ='email=' + email + 'message=' + message;


  $('#submit').click(function(){

$.ajax({
type: "POST",
url: "mail.php",
data: datastr,
cache: false,
 error: function () {

    alert('did not go thru');
   },
success: function(html){
//$("#response").fadeIn("slow");
$("#tab1").html(html);
//setTimeout('$("#response").fadeOut("slow")',2000);
alert('mail sent');
}
});


 });

【问题讨论】:

    标签: php jquery email function


    【解决方案1】:

    您的 datastr 中缺少一个 & 符号:

    var datastr ='email=' + email + 'message=' + message;
    

    应该是

    var datastr ='email=' + email + '&message=' + message;
    

    更新

    SMTP 错误来自 SMTP 服务器,因此您应该与运行该错误的人交谈,了解他们为检测垃圾邮件而设置的标准。

    我的猜测是没有正文的电子邮件根据其定义构成垃圾邮件。上面 datastr 的错误将导致 NULL 正文。此外,如果您在进行测试时没有在 message 文本框中添加任何文字,这也会导致正文长度为零。

    注意...我在推测您的邮件为何被视为垃圾邮件...请与 SMTP 服务器所有者联系以了解更多信息。

    【讨论】:

    • 注:这可能不是完整的解决方案......但这是一个开始
    • 是的,我过去也遇到过由于正文为空而被服务器阻止的问题..
    【解决方案2】:

    我更喜欢使用:

    data: ({email : $("#email").val(), message: $("#message").val()}),
    

    可能问题出现在您的邮件功能中。 如果您发布邮件功能的代码会更清楚。

    【讨论】:

      【解决方案3】:

      这里是完整的邮件功能代码。第一部分被注释掉了 b/c 我认为它有问题。

          <?php
      /*
          $name = $_POST['name'];
          $visitor_email = $_POST['email'];
          $message = $_POST['message'];
      
          $email_from = "info@***.com";
          $email_from2 = $visitor_email;
          $email_subject = "Inquiry";
          $email_body = "here is the body of the message".
      
      
          $to = "info@***.com";
          $headers = "From: $email_from";
          //$headers .= "Reply-To: $visitor_email";
          //Send email!
          mail($to,$email_subject,$email_body,$headers);
      */
      
      $mailTo = "info@***.com";
      $mailFrom = $_POST['email'];
      $subject = "Inquiry";
      $message = $_POST['message'];
      
      
      mail($mailTo, $subject, $message, "From: ".$mailFrom);
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-07
        • 1970-01-01
        • 1970-01-01
        • 2011-01-26
        • 2014-09-02
        • 2012-04-17
        相关资源
        最近更新 更多