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

Mailcoach Laravel 营销活动加载停滞无法发送问题求助

Mailcoach营销活动加载停滞/无法发送的排查方案

1. 检查Mailcoach专属队列任务状态

  • 执行 php artisan queue:work --queue=mailcoach --once 手动触发Mailcoach队列任务,观察是否有报错信息
  • 确认队列Worker是否监听了mailcoach队列:默认Mailcoach会将任务投递到mailcoach队列,若你的Worker仅监听默认队列,会导致任务积压
  • 执行 php artisan mailcoach:run-scheduled-campaigns 手动触发待发送的营销活动,查看是否能正常启动发送流程

2. 排查数据库中的活动状态与锁

  • 查看mailcoach_campaigns表,检查目标活动的status字段:若卡在sending状态,可能是任务中断导致的锁残留
  • 检查mailcoach_campaigns表的locked_at字段,若有值且超过合理时长,手动清空该字段,将活动状态重置为scheduled后重试
  • 查看mailcoach_message_jobs表,是否存在大量未处理或失败的任务,可尝试删除失败任务后重新触发活动

3. 验证队列驱动的运行细节

  • 若使用Redis队列,执行 redis-cli KEYS "*queue*" 查看mailcoach队列的积压情况,确认是否有未消费的任务
  • 若使用数据库队列,查看jobs表中queue字段为mailcoach的记录,检查reserved_at字段是否有长时间未释放的任务,手动将其设为NULL释放锁
  • 查看Worker专属日志(如storage/logs/queue-worker.log),而非仅服务器日志,可能存在未被捕获的任务错误

4. 清除缓存与重置配置

  • 执行 php artisan cache:clear、php artisan config:clear 清除系统缓存,避免旧配置残留
  • 重新发布Mailcoach配置文件:php artisan vendor:publish --tag=mailcoach-config,确认mailcoach.php中queue配置项为mailcoach或指定的队列名称
  • 执行 php artisan mailcoach:clear-cache 清除Mailcoach自身缓存

5. 测试基础发送能力

  • 创建测试路由,验证单个邮件发送逻辑是否正常:
    Route::get('/test-mailcoach', function () {
        $campaign = \Spatie\Mailcoach\Models\Campaign::find(1);
        $subscriber = \Spatie\Mailcoach\Models\Subscriber::first();
        \Spatie\Mailcoach\Facades\Mailcoach::sendCampaignToSubscriber($campaign, $subscriber);
        return '测试邮件已触发';
    });
    
  • 访问该路由,观察是否有报错,同时检查邮件是否成功发送,排查是否是活动模板语法错误导致的阻塞

6. 检查服务器资源限制

  • 查看服务器CPU、内存使用率,资源不足会导致Worker无法正常处理任务
  • 检查PHP配置:max_execution_time、memory_limit是否过低,导致任务中途中断
  • 确认服务器防火墙/安全组是否允许Mailcoach连接邮件服务器的端口(如25/587/465)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:44:53