【问题标题】:laravel 5.2 e-mail not delivered no exceptionlaravel 5.2 邮件未送达无异常
【发布时间】:2016-04-25 14:39:01
【问题描述】:

我正在尝试在 laravel 5.2(从 5.2 升级)中重置密码并向我的邮件发送密码令牌(使用 laravel 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 的消息是“我们已经通过电子邮件发送了您的密码重置链接!”

我的 .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) 我做错了什么?

【问题讨论】:

  • 您是否重新检查pretend 键入mail.php
  • 在lumen 5.7遇到同样的问题,认证成功,无异常

标签: php email laravel laravel-5


【解决方案1】:

我不确定确切的问题是什么,但我会给你我的工作代码(也使用 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,或者禁用它。他们通常会告诉他们是否接受 tls 加密。

邮件.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 作为变量。

您的邮件模板应如下所示:

<!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>

【讨论】:

  • 我不确定它是什么,但我浏览了你所有的东西,现在它可以工作了。谢谢!
猜你喜欢
  • 2016-05-23
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 2016-04-24
  • 2014-10-17
  • 1970-01-01
  • 2016-09-18
  • 2020-02-02
相关资源
最近更新 更多