我正在尝试重置laravel 5.2中的密码(从5.2升级)并将密码令牌发送到我的邮箱(使用laravels 5.2 new make:auth)。
我的.env文件
APP_ENV=local
APP_DEBUG=true
APP_KEY=xxxxxxxxxxxxxxxxxxxxxxxxx
DB_HOST=localhost
DB_DATABASE=xxxxxxxxxx
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
MAIL_DRIVER=smtp
MAIL_HOST=xxxx.xxxxxx.xx
MAIL_PORT=25
MAIL_USERNAME=xxxx@xxxxxx.xx
MAIL_PASSWORD=xxxxxxxxxxxxx
MAIL_ENCRYPTION=tls
我在mail.php中配置了这一行
'from' => ['address' => 'xxx@xxx.com', 'name' => 'xxx'],
起初它给出了例外,因为我没有使用正确的凭据/设置。那个错误消失了。
a)如何检查邮件是否已发送? b)我如何检查为什么没有交付? c)我做错了什么?
答案 0 :(得分:0)
我不确定究竟是什么问题,但我会给你我的工作代码(也使用5.2),然后你可以检查我们的代码之间是否有不同之处:
.ENV
MAIL_DRIVER=smtp
MAIL_HOST=asmtp.unoeuro.com
MAIL_PORT=587
MAIL_USERNAME=hello@google.com
MAIL_PASSWORD=********
MAIL_ENCRYPTION=tls
确保您的邮件服务器正在使用TLS,或禁用此功能。他们通常会告诉他们是否接受加密。
mail.php
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'asmtp.unoeuro.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => "hello@google.com", 'name' => "Hello World"],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
使用控制器设置视图并在控制器中对其进行硬编码,以便在您访问视图时,将运行以下代码: (请记住分配$ thename和$ theemail或硬编码
use Mail;
$mailvar = ['name' => $thename, 'email' => $theemail];
Mail::send('Mailtemplate.view', ['mailvar' => $mailvar], function ($message) use ($mailvar) {
$message->from('noreply@google.com', 'google.com');
$message->to($mailvar['email'], $mailvar['name'])->subject('You recieved a message');
});
请记住创建Mailtemplate.view视图,其中应显示邮件。您可以在视图中使用$ name和$ email作为变量。
您的mailtemplate看起来应该是这样的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<style type="text/css" media="screen">';
</style>
</head>
<body>
Name: {{ $mailvar['name'] }}
Email: {{ $mailvar['email'] }}
</body>
</html>