【问题标题】:@.SYNTAX-ERROR. in PHP mail sender@.语法错误。在 PHP 邮件发件人中
【发布时间】:2015-05-27 13:36:17
【问题描述】:

我正在使用 HTML 表单通过 ajax 将输入转发到 PHP 文件,其中使用 PHPMailer 发送电子邮件。在将数据发送到 PHP 文件之前,我使用 JQuery 来验证一些输入(姓名和邮件地址)。

这是我的代码:

HTML 表单:

<form class="ajax" action="script/send_form.php" method="post">
        <input id="name" name="name" type="text"  />
        <input id="mail" name="mail" type="text"  />
        <input id="mail" name="note" type="text"  />
        <button type="submit" id="send">Send</button>
</form>

使用PHPMailer的Autoload功能的PHP文件:

    <?

$return = chr(13).chr(10);
$line = "-----------------------------------------------".$return;

$name = '';
$email = '';

if(!empty($_POST['name'])) {
    $name = $_POST['name'];
}

$email = $_POST['mail'];
$note = $_POST['note'];

$msg = $note;

require 'phpmailer/PHPMailerAutoload.php';

//Create a new PHPMailer instance
$mail = new PHPMailer;
$mail->CharSet = 'UTF-8';

//Set who the message is to be sent from
$mail->From = $email;
$mail->FromName = $name;


//Set who the message is to be sent to
$mail->addAddress('info@internet.com', 'John Doe');

//Set the subject line
$mail->Subject = 'Some Subject';


$mail->Body = $msg;

//send the message, check for errors
if (!$mail->send()) {
    echo "Mail Error: " . $mail->ErrorInfo;
} else {
    echo "Sent";
}

?>

jquery:

   function validateEmail(email) { 

    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(email);
}

function validate(){
    var email = $("#mail").val();
      if (validateEmail(email)) {
          var mail = $('#mail').val();
      } else {
  alert ('Bitte gültite E-Mail Adresse eingeben!') 
      }
}

function dottedButton () {
  document.getElementById('send').innerHTML = '...';
} 


$('form.ajax').on('submit', function(ev){
     ev.preventDefault();
     validate ();

     var name = $('#name').val();
     var mail = $('#mail').val();

     if(name && mail){

            var that = $(this);
                url = that.attr('action');
                type = that.attr('method');
                contents = that.serialize();
        dottedButton ();

            $.ajax({
                url: url,
                type: type,
                data: contents,
                success: function(response){
                    document.getElementById('send').innerHTML = 'sent';
                }
            });
     } else {
        alert ('pleas fill out all fields!') 
     };
    return false;
});

问题是:不定期(每隔一两天)我的收件箱中有一封电子邮件,该电子邮件是空的,并且发件人的电子邮件地址显示:@.SYNTAX-ERROR。

我不知道为什么会这样。是否有可能某些机器人自动发送 PHPMailer?

顺便说一句:我的主机是 hoststar.at

提前致谢!

【问题讨论】:

    标签: php jquery ajax email phpmailer


    【解决方案1】:

    不要这样做:

    $mail->From = $email;
    $mail->FromName = $name;
    

    您正在尝试伪造发件人地址,您将遇到交付问题,并且您很容易遇到您所看到的问题。只需将提交的发件人地址放在邮件正文中,如果需要,将其回复到标题中即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 2022-08-17
      • 2021-06-05
      • 1970-01-01
      • 2012-09-29
      相关资源
      最近更新 更多