Laravel SMTP添加认证方式(PLAIN、LOGIN、CRAM-MD5)配置位置咨询
在Laravel中配置SMTP认证方式(PLAIN/LOGIN/CRAM-MD5)
嘿,我刚好碰到过这个问题!Laravel默认的config/mail.php里确实没把SMTP认证方式的配置项显式列出来,但这不代表没法指定——底层的邮件驱动(不管是Laravel 9+用的Symfony Mailer,还是旧版的SwiftMailer)都支持配置PLAIN、LOGIN或CRAM-MD5这些认证模式。
你有两种配置方式可选:
方式1:直接修改config/mail.php
找到配置文件里的smtp数组,手动添加auth_mode字段,指定你需要的认证方式:
'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'auth_mode' => 'cram-md5', // 可选值:plain、login、cram-md5 'local_domain' => env('MAIL_EHLO_DOMAIN'), ],
方式2:通过.env文件配置(推荐,更灵活)
先在你的.env文件中添加一行:
MAIL_AUTH_MODE=cram-md5
然后回到config/mail.php的smtp数组,把auth_mode关联到这个环境变量:
'smtp' => [ // ... 其他原有配置 'auth_mode' => env('MAIL_AUTH_MODE', null), // 默认null的话,驱动会自动尝试合适的认证方式 ],
注意事项
- 认证方式的字符串要使用小写:
plain对应PLAIN,login对应LOGIN,cram-md5对应CRAM-MD5 - 如果不指定
auth_mode,邮件驱动会自动检测可用的认证方式;但有些邮件服务器要求必须指定特定模式,这时候手动配置就很有必要
内容的提问来源于stack exchange,提问作者Przemek
相关产品推荐
相关产品推荐

