首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >尝试让Laravel 5电子邮件正常工作

尝试让Laravel 5电子邮件正常工作
EN

Stack Overflow用户
提问于 2015-03-17 21:53:15
回答 19查看 209.6K关注 0票数 155

我正在尝试通过键入URL向指定用户发送电子邮件,但收到以下错误:

AbstractSmtpTransport.php行383中的

Swift_TransportException :预期响应代码250,但得到代码"530",并显示消息"530 5.7.1需要身份验证“

到目前为止,我只是尝试让它与Gmail一起工作。我怎么才能让它工作呢?

这就是我目前所拥有的:mail.php

代码语言:javascript
复制
<?php
    return [
        'driver' => env('MAIL_DRIVER',' smtp'),
        'host' => env('MAIL_HOST', 'smtp.gmail.com'),
        'port' => env('MAIL_PORT', 587),
        'from' => ['address' =>"MyUsername@gmail.com" , 'name' => "example"],
        'encryption' => 'tls',
        'username' => env('MyUsername@gmail.com'),
        'password' => env('MyPassword'),
        'sendmail' => '/usr/sbin/sendmail -bs',
        'pretend' => false,
    ];

这是我在路由中的信息:

代码语言:javascript
复制
Route::get('test', function() {
    Mail::send('Email.test', [], function ($message) {
        $message->to('example@gmail.com', 'HisName')->subject('Welcome!');
    });
});

这是我的控制器中的内容:

代码语言:javascript
复制
class MailController extends Controller
{
    public function Sending_Email()
    {
        $this->call('GET','Email.test');
        return View('Email.test');
    }
}

这是我的.env文件中的内容:

代码语言:javascript
复制
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword
EN

回答 19

Stack Overflow用户

回答已采纳

发布于 2015-03-24 23:47:33

我知道它现在对你很有效,@Vanheman6,但这就是对我有效的方法,以防对其他人也是如此。

我将正在使用的邮件服务的详细信息添加到我的.env文件中。因此,请确保以下细节

代码语言:javascript
复制
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword

在.env文件中是准确的。

注意:在编辑.env文件后,不要忘记重新启动服务器,这样它就会选择您放入其中的新数据。

使用以下命令清除配置缓存:

代码语言:javascript
复制
php artisan config:cache

如果不重新启动服务器,即使您所做的更改可能会导致此错误,.env文件仍将继续向应用程序显示旧的邮件数据。

票数 246
EN

Stack Overflow用户

发布于 2015-07-03 03:26:13

对于laravel5.1,我的.env文件配置如下所示

代码语言:javascript
复制
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@gmail.com
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls

这里最重要的是,我创建了gmail应用程序特定的密码(16位)。

我需要再透露一件事,因为没有任何配置的运气。也就是说,每当我更改.env文件时,都需要运行此命令

代码语言:javascript
复制
php artisan config:cache

这是最重要的,因为如果没有这个命令,laravel会从它的缓存中执行以前的设置。我花了10多个小时才弄明白。

票数 54
EN

Stack Overflow用户

发布于 2015-03-17 22:00:01

由于配置文件中的用户名和密码设置错误,您将收到身份验证错误。

更改此设置:

代码语言:javascript
复制
'username' => env('MyUsername@gmail.com'),
'password' => env('MyPassword'),

要这样做:

代码语言:javascript
复制
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),

env方法检查您的.env文件。在.env文件中,您调用这些MAIL_USERNAME,因此这就是您需要传递给env方法的内容。

一个故障排除提示:添加dd(Config::get('mail'));,这样您就可以看到实际生成的配置。这将帮助您发现像这样的问题,并准确地知道Laravel将尝试和使用哪些信息。因此,您可能希望在测试路径中暂时停止该测试,以检查您所拥有的内容:

代码语言:javascript
复制
Route::get('test', function()
{
    dd(Config::get('mail'));
});
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29100877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档