我使用以下代码在Laravel 5.1中发送电子邮件
Mail::send('Project.Emails.Award', $data, function($message)
{
$message
->to('EmailAddress', 'EmailAddress')
->subject('hi');
});
这里的问题是上述功能需要最少5秒才能完成处理。
问题:是否提供异步方法,我不需要等待响应?
有人可以提供有关在Localhost和GoDaddy上排队设置的分步指南吗?
答案 0 :(得分:8)
根据您使用的或您必须使用的邮件驱动程序,可能还有其他选项可以提高性能。但是,保持UI响应的最有效方法是queueing the mail messages。
使用您的代码,这将非常简单:
/Home/Index
您虽然需要设置queueing,但您无法在某些托管服务器上正常执行此操作。
答案 1 :(得分:0)
我应Helper的要求发布此信息,并演示API方法。
由于他们可以免费使用,Mailgun可能是最佳选择,因为您每月可以免费获得10,000封电子邮件,然后在每封电子邮件之后支付少量费用。
Laravel ships with the drivers ready已经集成到Mailgun,所以开始实际上非常容易。
首先,您只需注册一个Mailgun帐户并设置您的域名:
完成后,您只需配置应用程序即可使用它。 This guide很好地涵盖了Laravel上Mailgun的配置,但基本上是你:
composer require "guzzlehttp/guzzle=~5.0"
config/services.php
文件符合以下配置,以便我们可以保证我们的详细信息安全并将其存储在.env
文件中即
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
.env
文件中,并使用正确的值填充它们e.g
MAIL_DRIVER=mailgun
MAIL_HOST=smtp.mailgun.org
MAIL_PORT=587
MAIL_USERNAME=XXX
MAIL_PASSWORD=XXX
MAIL_ENCRYPTION=tls
MAILGUN_DOMAIN=THE-DOMAIN-SETUP-IN-MAILGUN
MAILGUN_SECRET=THE-API-KEY-FOR-DOMAIN
一旦你完成了所有操作,那么你只需使用Mail::send()
命令就可以像以前一样发送电子邮件 - 但是现在它会立即发送(取决于你的服务器 - 我的很漂亮)基本并立即发送电子邮件):
Mail::send('Project.Emails.Award', $data, function($message)
{
$message
->to('EmailAddress', 'EmailAddress')
->subject('hi');
});