laravel 5.2电子邮件未送达也不例外

时间:2016-01-19 22:43:48

标签: php email laravel laravel-5

我正在尝试重置laravel 5.2中的密码(从5.2升级)并将密码令牌发送到我的邮箱(使用laravels 5.2 new make:auth)。

  1. 设置邮件驱动程序以记录
  2. 转到:http://localhost/public/password/reset
  3. 填写电子邮件地址,然后单击“发送密码重置链接”
  4. 电子邮件存储在日志文件
  5. 将邮件驱动程序更改为smtp
  6. 运行php artisan config:cache
  7. 再次执行第2步和第3步
  8. 未显示错误/异常
  9. laravel的消息是“我们已通过电子邮件发送密码重置链接!”
  10. 我的.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)我做错了什么?

1 个答案:

答案 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>