Laravel 通知 mailtrap.io 的执行时间超过

问题描述 投票:0回答:1

我正在尝试将电子邮件通知从我的 Laravel 应用程序发送到我在 mailtrap.io 的收件箱

我在 mailtrap.io 的收件箱设置中选择了 laravle 9+,然后复制变量并将其粘贴到我的项目 .env 文件中。

MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxx
MAIL_PASSWORD=xxxx
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="${APP_NAME}"

创建了通知“WelcomeNotification”并在 HomeController 中使用它,如下所示。

 public function index(){
    $user = User::find(1);
    Notification::send($user, new WelcomeNotification);;
    // $user->notify(new WelcomeNotification);
    return view('welcome');
}

它抛出错误

Maximum execution time of 60 seconds exceeded

我已经在端口 25、465 和 587 上尝试过,但没有成功并抛出另一个错误。

注意:我使用的是 Laravel 10.24

laravel notifications
1个回答
0
投票

1。检查邮件陷阱配置

确保 .env 文件中的值正确。例如:

MAIL_MAILER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=xxxx (from Mailtrap)
MAIL_PASSWORD=xxxx (from Mailtrap)
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="[email protected]"
MAIL_FROM_NAME="${APP_NAME}"

仔细检查

MAIL_USERNAME
MAIL_PASSWORD
是否正确。您可以登录 Mailtrap 进行确认。

2。清除配置缓存

更改 .env 文件后,运行以下命令以清除所有缓存的配置:

php artisan config:clear
php artisan cache:clear

3.测试连接

在尝试发送电子邮件之前,您可以通过在 Laravel 项目中运行以下命令来检查应用程序是否可以连接到 Mailtrap SMTP 服务器:

telnet sandbox.smtp.mailtrap.io 2525

如果连接成功,您将看到来自 Mailtrap 服务器的响应。如果不成功,问题可能与您的本地环境或托管服务器阻止 SMTP 连接有关。

4。增加 PHP 执行时间(如有必要)

如果您怀疑问题与执行时间有关,您可以尝试增加

php.ini
文件中的 max_execution_time:

ini

max_execution_time = 120

或者,您可以通过修改控制器或通知逻辑中的 PHP 设置来在 Laravel 项目中进行设置:

ini_set('max_execution_time', 120);

5。尝试不使用 TLS(用于测试)

您可以尝试在 .env 文件中设置 MAIL_ENCRYPTION=null 作为测试:

MAIL_ENCRYPTION=null

但是,如果 Mailtrap 出于安全目的需要加密,请确保返回 tls。

6。使用端口

2525

Port 2525
经常与Mailtrap一起使用,如果配置正确它应该可以工作。如果仍然不起作用,您可能需要咨询 Mailtrap 的支持人员,看看他们是否存在任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.