我遇到PHP Mailer的问题,当发生错误时,它没有提供$ mail-> ErrorInfo。 我使用[http://phpmailer.worxware.com/?pg=tutorial#1]中的原始示例进行了测试,如下所示。
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "smtp.example.com"; // SMTP server
$mail->From = "from@example.com";
$mail->Subject = "First PHPMailer Message";
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHPMailer.";
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}
?>
我已将主机设置为我的服务器,已修改&#34;来自&#34;和&#34; AddAddress&#34;纠正地址,我按预期收到了测试邮件。但是,当我将收件人地址更改为blxxxa@blablaxxxx.de时,只是为了检查错误的处理方式,我不会收到错误。
$mail->AddAddress("blxxxa@blablaxxxx.de");
我仍然收到&#34;邮件已发送&#34;。任何的想法?也许服务器设置?
答案 0 :(得分:2)
ErrorInfo
将不会包含错误消息。听起来你的邮件服务器正在接受邮件而没有抱怨(如果它是一个中继或本地主机就会出现这种情况),所以你需要检查你的邮件服务器日志和你的退回邮箱,因为问题是你的上游,因此不是对PHPMailer可见。
简而言之,你没有做错任何事,你只是在错误的地方寻找。
答案 1 :(得分:0)
尝试将$ mail-&gt; Send()放入try-catch块。
try{
// ... Your Setup ...
$mail->Send();
}
catch (phpmailerException $e) {
echo $e->errorMessage(); //PHPMailer error messages
}
catch (Exception $e) {
echo $e->getMessage(); // other error messages
}
如果你看一下phpmailer库的代码(phpmailer library on github搜索公共函数send()代码块) 你会发现phpmailer会在出现故障时抛出异常。
您在此处有一些好的示例:http://www.merocode.com/sending-emails-using-phpmailer-via-smtp/
祝你好运。答案 2 :(得分:0)
提供profer主机名,用户名和密码。例如,
<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "mail.example.com"; // SMTP server
$mail->Port = 25; // set the SMTP port for the GMAIL server
$mail->Username = "username"; // SMTP account username example
$mail->Password = "password";
$mail->From = "from@example.com";
$mail->Subject = "First PHPMailer Message";
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHPMailer.";
$mail->WordWrap = 50;
if(!$mail->Send()) {
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent.';
}
?>
答案 3 :(得分:0)
我的情况是PhpMailer在mail.xxx.com' did not match expected CN=
发出警告
警告:stream_socket_enable_crypto():对等证书CN =
@$mail->send();
mail.yyy.com'在368行的class.smtp.php中
因此,恕我直言PhpMailer错过了一些异常处理。 在这种情况下,您可能会遇到以下情况:
quotechar="'"
中添加“ @”-隐藏警告,但对您没有进一步的帮助更新:
在PHPMailer 6.x中,警告已删除-但$ mail-> ErrorInfo不包含任何有用的信息。我得到的只是“ SMTP connect()failed”。并不是真正的进步...