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

Laravel发信报错Maximum execution time of 60 seconds exceeded

Laravel 邮件发送60秒超时问题修复

你遇到的Maximum execution time of 60 seconds exceeded报错本质是SMTP连接/发送流程卡住触发的脚本超时,不是PHP默认执行时长过短导致,代码里存在明确问题,按以下步骤修复即可:

  • 修复.env配置的格式错误
    你复制的Mailtrap配置里,MAIL_FROM_ADDRESS项等号后多了一个前置空格,会导致读取到的发件人地址携带非法字符,SMTP握手阶段直接卡住。将该行修改为:
    MAIL_FROM_ADDRESS=ranahamzaghy@gmail.com
    
    修改完成后必须执行php artisan config:clear清除Laravel的配置缓存,否则旧配置不会生效。
  • 修复TestMail邮件类的参数接收逻辑
    路由中实例化邮件类时传入了$details数组,但邮件类的构造函数既没有声明参数接收,也没有将数据传递给视图,虽然这个问题不会直接触发超时,但会导致邮件模板无法读取传入的邮件内容。修正后的app/Mail/TestMail.php代码如下:
    <?php
    
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Contracts\Queue\ShouldQueue;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    
    class TestMail extends Mailable
    {
        use Queueable, SerializesModels;
    
        public $details;
    
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public function __construct($details)
        {
            $this->details = $details;
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
            return $this->subject('Mail from rajtechnologies.com')->view('emails.mail');
        }
    }
    
  • 连通性排查(配置修改后仍超时再做)
    执行命令telnet smtp.mailtrap.io 2525测试本地到Mailtrap SMTP服务器的端口连通性,本地开发环境、云服务商经常会默认封禁25、2525等对外SMTP端口,会导致连接一直挂起直到触发超时。如果端口不通,更换Mailtrap提供的其他可用端口(比如465、587)同时对应修改MAIL_ENCRYPTION参数即可。
  • 可选优化:避免请求阻塞
    如果不想让用户请求等待邮件发送流程,可以让TestMail类实现ShouldQueue接口,将邮件发送任务丢到队列异步执行,从根源上避免请求等待超时。修改后类声明为:
    class TestMail extends Mailable implements ShouldQueue
    
    之后启动队列进程php artisan queue:work即可,发邮件逻辑会在后台执行,不会阻塞当前HTTP请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:36:27