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

Laravel对接mail.ru SMTP发信报550 not local sender错误咨询

错误根因

550 not local sender over smtp 是mail.ru SMTP服务的强制校验规则触发:SMTP认证使用的账号,必须和发信时声明的From发件人地址完全一致,不允许使用同域名下未通过当前SMTP会话认证的邮箱作为发件人,哪怕域名归属你本人也会被直接拒收。
你当前配置中SMTP登录账号为support@domain.com,但.env配置、Mailable类中硬编码的发件人地址均为no-reply@domain.com,地址不匹配直接触发报错。之前替换配置后问题未解决,核心原因是Mailable类里硬编码的from()调用优先级高于全局配置,无论.env怎么修改,发信时还是会使用硬写的no-reply@domain.com作为发件地址。

修复步骤
  • 方案1:无需新增邮箱账号,最快修复
    1. 修改.env中的发件人地址配置,和SMTP登录账号保持一致:
    MAIL_FROM_ADDRESS=support@domain.com
    
    1. 编辑app/Mail/ContactMailer.php,删除build()方法中的->from('no-reply@domain.com', 'Admin')调用,让框架自动读取全局发件人配置,避免硬编码覆盖配置。修改后的build方法参考:
    public function build()
    {
        return $this->view('emails.contact')->with('data', $this->data);
    }
    
    1. 执行命令清除配置缓存,确保新配置生效:
    php artisan config:clear
    php artisan cache:clear
    
  • 方案2:保留no-reply@domain.com作为发件人
    1. 登录mail.ru企业邮箱管理后台,创建并激活no-reply@domain.com邮箱账号,获取该账号的登录密码/SMTP授权码。
    2. 修改.env中的SMTP认证配置和发件人配置,统一为该账号信息:
    MAIL_USERNAME=no-reply@domain.com
    MAIL_PASSWORD=该账号对应的SMTP授权密码/登录密码
    MAIL_FROM_ADDRESS=no-reply@domain.com
    
    1. 同样删除Mailable类中硬编码的from()调用,执行上述清缓存命令即可。
排查补充

如果按上述步骤操作后仍报错,检查config/mail.php中的全局from配置是否被硬编码,确保配置项读取env参数:

'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
    'name' => env('MAIL_FROM_NAME', 'Example'),
],

注意:mail.ru SMTP不支持发件人别名功能,不要尝试在认证账号和发件人地址不一致的情况下强行发信,这类请求都会被服务端直接拦截。

内容的提问来源于stack exchange,提问作者Alvrd Sultan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 07:39:20