【发布时间】:2020-12-19 21:55:35
【问题描述】:
有很多帖子试图弄清楚 PHPmailer 可以在 localhost 但不能在服务器中工作,但我的问题更奇怪!
我有一个脚本在我的本地机器上运行良好(osx 上的 XAMP)。我在我的服务器上使用 SMTP,一切正常!
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
include 'PHPMailer/src/PHPMailer.php';
include 'PHPMailer/src/Exception.php';
include 'PHPMailer/src/SMTP.php';
$serverEmail = 'alarm_api@mydomain.com';
$email1 = $_GET['el1'];
$mail = new PHPMailer(true);
// SMTP config
$mail->isSMTP();
$mail->Host = 'lx14.hoststar.hosting';
$mail->SMTPAuth = true;
$mail->Username = $serverEmail;
$mail->Password = '***********';
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = 465;
/* Disable some SSL checks. */
$mail->SMTPOptions = array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
// Headers
$mail->setFrom($serverEmail, 'Alarm system');
$mail->addReplyTo($serverEmail, 'Alarm system');
$mail->addAddress($email1, $email1);
$mail->Subject = 'Something is wrong';
$mail->isHTML(true);
$mailContent = 'Some information..';
$mail->Body = $mailContent;
if($mail->send()){
print_r("Sending: OK".$br);
}else{
print_r("Sending: ERROR".$br);
}
?>
所以我的网址是 localhost/api.php?el1=email@server.com 并且运行良好。
问题!
如果我从其他来源(例如我的手机或本地网络上的另一台计算机)调用相同的 php 文件,我将执行 10.0.0.8/api.php?el1=email@server.com 之类的操作,基本上是一样的。
但它失败了!各种错误都会弹出,例如:
致命错误:未捕获异常 'PHPMailer\PHPMailer\Exception' 并带有消息“以下发件人地址失败:alarm_api@mydomain.com.br : MAIL FROM 命令失败,访问被拒绝 - HELO 名称无效(请参阅 RFC2821 4.1.3) ,550,SMTP 服务器错误:MAIL FROM 命令失败详细信息:访问被拒绝 - HELO 名称无效(请参阅 RFC2821 4.1.3) SMTP 代码:/Users/myself/eclipse-php/PHPMailer/src/PHPMailer.php:1869 中的 550'堆栈跟踪:#0 /Users/myself/eclipse-php/PHPMailer/src/PHPMailer.php(1601): PHPMailer\PHPMailer\PHPMailer->smtpSend('Date: Mon, 31 A...',
等等。
当从不同的机器调用脚本时,什么可能导致脚本失败?相同的 apache、相同的 php、相同的 PHPmailer、相同的文件、相同的 SMTP 服务器访问权限、相同的凭据...
那是相当长的。谢谢大家的时间!
【问题讨论】:
-
当配置为电子邮件发件人身份的一部分的 SMTP 域与发件人的电子邮件地址不匹配时,通常会发生“550 访问被拒绝 - HELO 名称无效”SMTP 错误。