PHPMailer报错‘Sender not allowed’,邮件发送突发故障求助
解决PHPMailer发件人不允许的错误
问题核心是Aruba的SMTP服务器限制发件人地址必须与SMTP认证的用户名一致。你当前用info@mydomain.it做SMTP登录,但setFrom使用了外部邮箱(gmail/outlook),违反了Aruba的发件规则,因此触发"Mittente non consentito / Sender not allowed"错误。
修复步骤
- 将
setFrom的邮箱地址改为与SMTP用户名一致的info@mydomain.it,可保留自定义发件人名称。 - 若需要让收件人回复到用户的真实邮箱,不要修改
setFrom,改用addReplyTo方法添加用户邮箱。
修改后的代码示例
try { $mail->SMTPDebug = 2; $mail->isSMTP(); $mail->Host = 'smtps.aruba.it'; $mail->SMTPAuth = true; $mail->Username = 'info@mydomain.it'; $mail->Password = 'myPassword'; $mail->SMTPSecure = 'tls'; $mail->Port = 587; // 发件人必须与SMTP认证用户名一致 $mail->setFrom("info@mydomain.it", 'Sender'); // 添加用户邮箱作为回复地址(按需使用) $mail->addReplyTo("myemail@gmail.com", '用户名称'); $mail->addAddress('info@mydomain.it'); $mail->isHTML(true); $mail->Subject = "Subject"; $mail->Body = "Body"; if (!$mail->send()) { $result = array('status'=>"error", 'message'=>"Mailer Error: ".$mail->ErrorInfo); print_r(json_encode($result)); } else { $result = array('status'=>"success", 'message'=>"Message sent."); print_r(json_encode($result)); } } catch (Exception $e) { echo "Error exception: ".$e; }
补充说明
多数邮件服务商(包括Aruba)都会限制SMTP发件人地址与登录邮箱一致,这是防止垃圾邮件和伪造发件人的常规规则。即使之前能正常使用,可能是服务商后续收紧了规则,或是之前的配置侥幸通过。
内容的提问来源于stack exchange,提问作者giovanni13696
相关产品推荐
相关产品推荐

