【发布时间】: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