Laravel配置Zoho SMTP发信时MAIL_FROM_NAME带空格故障求解
Laravel Zoho SMTP 配置问题解决方案
核心错误原因排查
你遇到的添加引号后出现连接拒绝的问题,本质是两个配置问题叠加导致的:
- 初始配置中SMTP端口与加密方式不匹配:Zoho SMTP规定
587端口对应tls加密,465端口对应ssl加密,你用587端口搭配ssl加密本身就存在兼容问题。 - 未加引号时,.env解析器遇到空格会截断MAIL_FROM_NAME的值,且会触发dotenv解析异常导致网站崩溃;此时如果存在旧的配置缓存,发信逻辑会读取缓存中有效的旧配置,所以能正常发信。添加引号后.env解析正常,就会加载不匹配的端口加密配置,直接触发连接拒绝报错。
具体解决步骤
1. 修正端口与加密的对应关系
两种合法配置二选一即可:
# 方案A:使用SSL加密 MAIL_PORT=465 MAIL_ENCRYPTION=ssl # 方案B:使用587端口 MAIL_PORT=587 MAIL_ENCRYPTION=tls
2. 保留带双引号的MAIL_FROM_NAME配置
带空格的.env参数必须用双引号包裹,这个操作本身是正确的,不需要调整:
MAIL_FROM_NAME="Test Sales"
3. 清理Laravel配置缓存
修改.env文件后必须清理旧缓存,避免配置残留:
# 清理配置缓存 php artisan config:clear # 生产环境建议重新生成缓存 php artisan config:cache
4. 验证配置有效性
执行命令查看实际加载的邮件配置是否符合预期:
php artisan tinker >>> config('mail')
确认输出中的from.name为Test Sales,port、encryption字段和你调整后的配置一致即可。
额外注意事项
需保证MAIL_FROM_ADDRESS配置值和MAIL_USERNAME的邮箱地址完全一致,Zoho SMTP会校验发件人地址与登录账号的匹配性,避免发信被拦截。
内容的提问来源于stack exchange,提问作者B L Praveen
相关产品推荐
相关产品推荐

