You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

线上项目注册时Swiftmailer报503错误的求助

问题分析与解决方案

错误核心原因

你遇到的Swift_TransportException 503错误包含两个关键提示:

  1. 503-No such recipient here:SMTP服务器判定目标收件人地址无效或不存在
  2. 503 Valid RCPT command must precede DATA:由于收件人地址被拒绝,RCPT命令执行失败,导致后续DATA命令无法正常触发

结合你的配置和历史运行情况,问题主要出在邮件驱动配置不匹配或SMTP服务器收件人验证逻辑变更上。


分步解决方案

1. 统一邮件驱动配置

你的.env和mail.php配置存在驱动冲突:

  • .env中设置MAIL_DRIVER=sendmail,但mail.php里仅配置了SMTP驱动参数
  • 需根据实际使用的驱动统一配置:

若使用Sendmail驱动:

  • 修改.env,删除/注释SMTP相关配置:
    MAIL_DRIVER=sendmail
    MAIL_FROM_ADDRESS=no-reply@musala.market
    MAIL_FROM_NAME="${APP_NAME}"
    
  • 确认服务器上sendmail服务正常运行,可通过以下命令验证:
    sendmail -v test@example.com <<EOF
    Subject: Test Sendmail
    This is a test.
    EOF
    

若使用SMTP驱动:

  • 修改.env中的驱动配置,同时修正加密方式(不要设为NULL):
    MAIL_DRIVER=smtp
    MAIL_HOST=localhost
    MAIL_PORT=587
    MAIL_USERNAME=no-reply@musala.market
    MAIL_PASSWORD="NEtVfBGALmpNVmKenZ3C"
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=no-reply@musala.market
    MAIL_FROM_NAME="${APP_NAME}"
    
  • 确保mail.php中的默认驱动与.env一致:
    'default' => env('MAIL_DRIVER', 'smtp'),
    

2. 验证SMTP服务器收件人逻辑

如果使用本地SMTP(localhost),通过命令行手动测试SMTP流程,定位收件人拒绝原因:

telnet localhost 587

执行以下SMTP命令序列替换<>内的内容:

EHLO localhost
AUTH LOGIN
# 输入base64编码的no-reply@musala.market
# 输入base64编码的密码NEtVfBGALmpNVmKenZ3C
MAIL FROM:<no-reply@musala.market>
RCPT TO:<测试用有效收件人邮箱>
DATA
Subject: SMTP Test

Test content.
.
QUIT

如果RCPT TO命令返回503,需检查:

  • 目标收件人邮箱是否真实存在
  • 本地邮件服务器(如Postfix)的relay_domains、smtpd_recipient_restrictions配置是否允许发送到目标域名
  • 服务器是否开启了收件人地址验证(如Postfix的reject_unverified_recipient规则)

3. 排查服务器环境变更

由于此前功能正常,需检查最近的服务器变动:

  • 是否更新了Laravel/Swiftmailer版本,导致配置逻辑变化
  • 邮件服务器(Postfix/Dovecot)是否被修改过配置或更新版本
  • 域名MX记录、反向解析是否变更,导致收件人服务器拒收邮件
  • 服务器是否被加入邮件黑名单(可通过MXToolbox等工具检测)

内容的提问来源于stack exchange,提问作者Rexhep Hoxha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 10:07:48