问题描述
我刚刚开始使用phpmailer发送邮件,而不是基本的邮件功能。
我已经将phpmailer函数添加到ajax脚本中,以便在某个事件上发送邮件。该脚本本身可以很好地运行,但是一旦添加$mail->send();
命令,我就会收到错误消息:
"Error - 200: parsererror"
它确实有效-邮件已发送,但没有正确返回到调用过程。 我已经减少了一些代码,以删除与该特定问题无关的额外验证和功能。 调用代码是:
jQuery('#save-supplier').click(function(e){
e.preventDefault();
$('#save-supplier').html('<i class="fa fa-cloud"></i> Saving...');
var formData = new FormData($('#edit-supplier-form')[0]);
$.ajax({
type: "POST",url: "./ajax/ajaxSendphpMail.php",data: formData,contentType: false,processData:false,cache: false,dataType: 'json',success: function(data) {
$(location).attr("href","supplier.php?supplier_code=<?php echo $supplier_code; ?>");
},error: function(data){
var errorMessage = data.status + ': ' + data.statusText;
alert('Error - ' + errorMessage);
$('#save-supplier').html('<i class="fa fa-save mr-5"></i> Save Changes');
}
});
return false;
});
});
并且带有phpmailer命令的脚本是:
ob_start();
session_start();
require '../inc/_global/db_con.php';
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
require '/var/www/vhosts/compleit.com/vendor/autoload.php';
try {
$mail = new PHPMailer(true);
//Server settings
$mail->SMTPDebug = 0;
$mail->isSMTP();
$mail->Host = 'compleit.com';
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'cAp$xxxYY';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
$mail->Port = 587;
//Recipients
$mail->setFrom('[email protected]');
$mail->addAddress('[email protected]');
$mail->addReplyTo('[email protected]');
// Content
$mail->isHTML(true);
$mail->Subject = 'test email';
$mail->Body = 'email body';
$mail->AltBody = 'email body';
$mail->send();
} catch (Exception $e) {
// no exception reporting - no need to know if email succeeded or failed
}
以前,我是通过标准的mail命令发送邮件的,但没有问题。
但是,现在我切换到phpmailer,并收到200 parsererror。停止此操作的唯一方法是注释掉$mail->send()
命令。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)