laravel homestead 上的 sendmail 504 网关超时
sendmail 504 Gateway Time-out on laravel homestead
我在 windows 和 xampp 上使用 lumen 框架编写了一个网络应用程序,但在路由等问题出现后,我决定尝试一下 homestead 和 vagrant。
我成功安装了 homestead,路由比 xampp 工作得更好,但是当我尝试使用 php 的邮件功能时,我发现命令 sendmail 没有安装在homestead 虚拟机导致我收到 500 内部服务器错误,并且 xampp 电子邮件发送工作正常。因此,对于 shh,我做了一个简单的 sudo apt-get install sendmail 来安装它。但是现在每当我尝试使用 php 中的邮件功能时,它只会等待并等待,最终我得到 504 网关超时 .
可能会发生什么情况,我该如何解决?
顺便说一句:如果您有任何建议用其他有效的方法替换简单的邮件功能,我愿意尝试!
谢谢大家的宝贵时间。
这是我的 .env 文件
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
DB_CONNECTION=sqlite
DB_FILE=database.sqlite
DB_DATABASE='storage/database.sqlite'
DB_DRIVER=sqlite
CACHE_DRIVER=memcached
SESSION_DRIVER=memcached
QUEUE_DRIVER=database
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=[mailtrap_username]
MAIL_PASSWORD=[mailtrap_password]
MAIL_FROM_ADDRESS=example@example.com
MAIL_FROM_NAME=Example
为什么不试试 http://mailtrap.io?它是免费的,是一个简单的 SMTP 服务器,用于从 PHP 发送电子邮件到其简单的 Web 界面中。
它非常适合测试本地发送的电子邮件,因为它会捕获电子邮件,以便您可以在闲暇时查看它们。
作为奖励:Laravel 5 现在包含 mailtrap 作为默认 SMTP 设置,让您只需提供用户名和密码:)
我个人在开发时喜欢使用 log
驱动程序。这会将发送的所有电子邮件写入 storage/logs/
日志文件。我发现这更方便,因为它完全确保在测试时不会意外发送邮件。
如果您真的想发送邮件,那么我建议您使用 mailgun,它每月可免费发送 10,000 封电子邮件,我在工作中构建的每个应用程序都使用它。超级快捷方便,还包括跟踪、送货确认等
注册后,您需要设置一个新域,该域将为您提供多个凭据,您需要将这些凭据添加到您的 config/services.php
,即您的域和 API关键。
然后您需要为您的应用程序安装 guzzle(这是必需的,因为 mailgun 使用 HTTP API 发送电子邮件,这比 SMTP 和传统的邮件传输选项快得多)。
composer require "guzzlehttp/guzzle": "~5.3|~6.0"
最后一件事是将您的邮件驱动程序设置为 mailgun
,您应该一切顺利。
编辑:查看 laravel/lumen-framework
的配置文件似乎无法提供能够使用 mailgun 的相关信息,或需要来自 [=] 的信息的任何服务16=] 配置文件,因为出于某种原因,这没有包含在 lumen 中。
我在 windows 和 xampp 上使用 lumen 框架编写了一个网络应用程序,但在路由等问题出现后,我决定尝试一下 homestead 和 vagrant。
我成功安装了 homestead,路由比 xampp 工作得更好,但是当我尝试使用 php 的邮件功能时,我发现命令 sendmail 没有安装在homestead 虚拟机导致我收到 500 内部服务器错误,并且 xampp 电子邮件发送工作正常。因此,对于 shh,我做了一个简单的 sudo apt-get install sendmail 来安装它。但是现在每当我尝试使用 php 中的邮件功能时,它只会等待并等待,最终我得到 504 网关超时 .
可能会发生什么情况,我该如何解决?
顺便说一句:如果您有任何建议用其他有效的方法替换简单的邮件功能,我愿意尝试!
谢谢大家的宝贵时间。
这是我的 .env 文件
APP_ENV=local
APP_DEBUG=true
APP_KEY=SomeRandomKey!!!
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
DB_CONNECTION=sqlite
DB_FILE=database.sqlite
DB_DATABASE='storage/database.sqlite'
DB_DRIVER=sqlite
CACHE_DRIVER=memcached
SESSION_DRIVER=memcached
QUEUE_DRIVER=database
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=[mailtrap_username]
MAIL_PASSWORD=[mailtrap_password]
MAIL_FROM_ADDRESS=example@example.com
MAIL_FROM_NAME=Example
为什么不试试 http://mailtrap.io?它是免费的,是一个简单的 SMTP 服务器,用于从 PHP 发送电子邮件到其简单的 Web 界面中。
它非常适合测试本地发送的电子邮件,因为它会捕获电子邮件,以便您可以在闲暇时查看它们。
作为奖励:Laravel 5 现在包含 mailtrap 作为默认 SMTP 设置,让您只需提供用户名和密码:)
我个人在开发时喜欢使用 log
驱动程序。这会将发送的所有电子邮件写入 storage/logs/
日志文件。我发现这更方便,因为它完全确保在测试时不会意外发送邮件。
如果您真的想发送邮件,那么我建议您使用 mailgun,它每月可免费发送 10,000 封电子邮件,我在工作中构建的每个应用程序都使用它。超级快捷方便,还包括跟踪、送货确认等
注册后,您需要设置一个新域,该域将为您提供多个凭据,您需要将这些凭据添加到您的 config/services.php
,即您的域和 API关键。
然后您需要为您的应用程序安装 guzzle(这是必需的,因为 mailgun 使用 HTTP API 发送电子邮件,这比 SMTP 和传统的邮件传输选项快得多)。
composer require "guzzlehttp/guzzle": "~5.3|~6.0"
最后一件事是将您的邮件驱动程序设置为 mailgun
,您应该一切顺利。
编辑:查看 laravel/lumen-framework
的配置文件似乎无法提供能够使用 mailgun 的相关信息,或需要来自 [=] 的信息的任何服务16=] 配置文件,因为出于某种原因,这没有包含在 lumen 中。