我在Laravel电子邮件中遇到了一个非常奇怪的问题。
一般来说,我可以像这样发送电子邮件:
Mail::send('foo', $templateData,
function (Message $message) use ($name, $email) {
$message
->from('admin@example.com', 'My Example Company')
->to($email, $name)
->subject('Blah');
}
);
但是,在尝试重置密码时,我的生产服务器上不会发送电子邮件,尽管它已经发送过(即没有例外!)。但是在使用mailtrap.io
时会发送。
这是我的.env
文件的样子:
APP_ENV=prod
APP_KEY=XXXX
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://example.co.uk
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=XXX
DB_USERNAME=XXX
DB_PASSWORD=XXX
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=XXX
MAIL_PORT=XXX
MAIL_USERNAME=XXX
MAIL_PASSWORD=XXX
MAIL_ENCRYPTION=ssl
MAIL_FROM=admin@example.com
MAIL_FROM_NAME="My Example Company"
GOOGLE_API_KEY=XXX
我也尝试过:
composer dump-autoload
php artisan clear-compiled
php artisan config:clear
但无济于事。
有趣的是,当我使用Mailer
而不是Mail
外观时,再次发送电子邮件时没有例外。
public function foo(Illuminate\Mail\Mailer $mailer)
{
$mailer->send('ViewName', [],
function (Message $message) {
$message
->from('admin@example.com', 'My Example Company')
->to('you@example.com', 'John Smith')
->subject('Blah');
}
);
}