【问题标题】:Laravel 5.5 does not send e-mailsLaravel 5.5 不发送电子邮件
【发布时间】:2018-07-29 22:21:17
【问题描述】:

您好,我尝试从注册脚本向用户 (link) 发送电子邮件。我有配置文件:

config/mail.php

return [

    'driver' => env('MAIL_DRIVER', 'smtp'),

    'host' => env('MAIL_HOST', 's44.linuxpl.com'),

    'port' => env('MAIL_PORT', 587),

    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'verify@coins.webmg.pl'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],

    'encryption' => env('MAIL_ENCRYPTION', 'tls'),

    'username' => env('verify@coins.webmg.pl'),

    'password' => env('MySecretPassword'),

    'sendmail' => '/usr/sbin/sendmail -bs',

    'markdown' => [
        'theme' => 'default',

        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
    'stream' => [
        'tls' => [
            'verify_peer' => false,
            'verify_peer_name' => false,
            'allow_self_signed' => true,
        ],
    ]
];

还有文件.env

MAIL_DRIVER=smtp
MAIL_HOST=s44.linuxpl.com
MAIL_PORT=587
MAIL_USERNAME=verify@coins.webmg.pl
MAIL_PASSWORD=MySecretPassword
MAIL_ENCRYPTION=tls

RegisterController.php发送邮件的脚本

protected function create(array $data)
{

    $user = User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => bcrypt($data['password']),
    ]);

    $verifyUser = VerifyUser::create([
        'user_id' => $user->id,
        'token' => str_random(40)
    ]);

    $sendMail = Mail::to($user->email)->send(new VerifyMail($user));

    return $user;
}  

班级VerifyMail

class VerifyMail extends Mailable
{
    use Queueable, SerializesModels;
    public $user;

    public function __construct($user)
    {
        $this->user = $user;
    }

    public function build()
    {
        return $this->view('emails.verifyUser');
    }
}

和文件发送verifyUser.blade.php

<h2>Welcome to the site {{$user['name']}}</h2>

不知道这个配置有什么问题,因为我可以正确登录邮箱,所以邮箱和密码都是正确的。另外,laravel 没有返回任何错误,脚本本身是正确执行的。

【问题讨论】:

  • 我用我的 gmail 凭据交换我的 smtp 详细信息,因为我知道那个 smtp 正在工作,如果问题仍然存在,我知道我的代码有问题,否则我的 smtp 有问题。
  • @DhavalChheda 好的,但是在Gmail中我有两条工厂Auth SMS,是否具有这样的帐户安全性,smtp可以工作吗?
  • @michal 由于Mailable 类使用Queable trait,默认队列是否在监听作业?
  • @AbishekRSrikaanth 可能是的,完整的文件VerifyMail.php,看起来像这样:link

标签: php laravel email


【解决方案1】:

只需将您的 config/mail.php 恢复为默认值,然后尝试直接在您的 laravel .env 文件中设置以下值

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=abc@gmail.com
MAIL_PASSWORD=abc@123

希望对你有所帮助,谢谢

【讨论】:

    【解决方案2】:

    我找到了解决方案。问题在于文件.env。该文件是使用以前的设置加载的。清理缓存文件就足够了。

    php artisan config:cache
    php artisan config:clear
    php artisan cache:clear
    

    这里描述得很好Trying to get Laravel 5 email to work

    【讨论】:

      【解决方案3】:

      将您的 mail.php 文件恢复为默认值:
      替换:

      'username' => env('verify@coins.webmg.pl'),
      'password' => env('MySecretPassword'),
      

      'username' => env('MAIL_USERNAME'),
      'password' => env('MAIL_PASSWORD'),
      

      您误解了env($key, $default = null) 方法的工作原理。它采用的第一个参数是环境变量的key(例如'MAIL_USERNAME'),第二个参数是default 值(可以是可选的)。

      将您的邮件凭据仅存储在 .env 文件中,而不是存储在配置文件的 env() 调用中。

      Laravel Docs: Configuration

      【讨论】:

        猜你喜欢
        • 2018-06-07
        • 2018-07-14
        • 2022-08-13
        • 1970-01-01
        • 2019-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多