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

生产环境Laravel应用调用SendinBlue API无法发送邮件排查

Laravel生产环境SendinBlue API邮件发送500错误排查方案

核心排查方向

1. 优先查看Laravel生产环境日志

控制台的error_log输出可能因生产环境PHP配置(如error_log路径、display_errors关闭)无法显示,直接前往Laravel默认日志目录storage/logs/laravel.log,查找对应时间点的错误堆栈,这是定位500错误最直接的方式。

2. 校验SendinBlue生产环境配置

  • 检查.env文件中SendinBlue相关变量(如SENDINBLUE_API_KEY、MAIL_MAILER=sendinblue等)是否与本地一致,排查拼写错误、密钥过期问题
  • 在生产服务器上执行curl -I https://api.sendinblue.com/v3/,验证服务器能否正常访问SendinBlue的API域名

3. 排查checkEmail函数的前置逻辑

你提到error_log('code='. $code->promo_code)未输出,说明代码执行到该行前已抛出异常:

  • 检查$code变量的获取逻辑,比如数据库查询是否返回null,导致调用->promo_code触发致命错误
  • 在checkEmail函数开头添加日志:error_log('进入checkEmail函数,邮箱:'. request('email')),确认函数是否真的被触发

4. 验证生产环境依赖与运行环境

  • 对比本地与生产的PHP版本、扩展(如curl、openssl),SendinBlue SDK对这些组件有版本要求
  • 确认生产环境已执行composer install --no-dev,排查依赖包是否完整安装、是否存在版本冲突

5. 临时开启调试模式(仅限测试,测试后关闭)

在.env中设置APP_DEBUG=true,同时确保APP_ENV=production时的调试配置允许显示错误(注意不要长期开启,避免泄露敏感信息),此时前端会展示具体错误信息,而非泛泛的500提示

实用调试技巧

  • 在checkEmail函数关键逻辑外包裹try-catch块,捕获所有异常并记录详细信息:
try {
    // checkEmail核心逻辑代码
    error_log('code='. $code->promo_code);
    // SendinBlue邮件发送代码
} catch (\Exception $e) {
    error_log('checkEmail异常:'. $e->getMessage() . ' 堆栈信息:'. $e->getTraceAsString());
}
  • 如果使用Laravel队列发送邮件,确认生产环境队列进程正在运行:执行php artisan queue:work(或配置supervisor守护进程),队列失败任务会存入failed_jobs表,可从中查看失败原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:52:21