我正在尝试通过键入URL向指定用户发送电子邮件,但我收到以下错误:
AbstractSmtpTransport.php第383行中的Swift_TransportException:预期响应代码250但得到代码“530”,消息“530 5.7.1需要验证
到目前为止,我只是想让它与Gmail一起使用。我怎样才能让它发挥作用?
这是我到目前为止:mail.php
<?php
return [
'driver' => env('MAIL_DRIVER',' smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' =>"[email protected]" , 'name' => "example"],
'encryption' => 'tls',
'username' => env('[email protected]'),
'password' => env('MyPassword'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
这就是我在路线中所拥有的:
Route::get('test', function() {
Mail::send('Email.test', [], function ($message) {
$message->to('[email protected]', 'HisName')->subject('Welcome!');
});
});
这就是我在我的控制器中所拥有的:
class MailController extends Controller
{
public function Sending_Email()
{
$this->call('GET','Email.test');
return View('Email.test');
}
}
这就是我的.env文件中的内容:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
我知道它现在为你工作@ Vantheman6但这对我有用,以防其他人也一样。
我在.env文件中添加了我正在使用的邮件服务的详细信息。因此,请确保以下详细信息
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
在.env文件中是准确的。
注意:编辑.env文件后,不要忘记重新启动服务器,以便选择放在那里的新数据。
如果不重新启动服务器,即使您进行了可能导致此错误的更改,.env文件仍将继续向应用程序显示旧邮件数据。
我遇到了同样的问题;我的MAIL_ENCRYPTION
在tls
上是mail.php
,但在null
文件中是.env
。
所以我将null
改为tls
,它奏效了!
以上解决方案都不适用于localhost。我甚至允许从不太安全的应用程序访问,允许通过显示解锁验证码进行访问,并设置验证对等方并验证SSL的对等名称为false。
最后,我使用了MailHog的开源SMTP测试解决方案。步骤如下:
MAIL_DRIVER = SMTP
MAIL_HOST = 127.0.0.1
MAIL_PORT = 1025
MAIL_USERNAME = TESTUSER
MAIL_PASSWORD = testpwd
MAIL_ENCRYPTION = NULL
mail_from_address=the address@有玩头.com
这只是意味着您的服务器无权访问SMTP服务器。
你可以通过这样做来测试:
telnet <smtpServer> <smtpPort>
您应该获得Access denied错误。
解决方案是只使用服务器可以访问的另一个SMTP服务器。
您应该重新启动服务器并运行以下命令:
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache
这应该工作。
如果dd(Config::get('mail'));
的结果为null,只需使用该命令即可
php artisan config:clear
我遇到了和你一样的问题,我才开始工作。
首先,您需要仔细检查.env设置是否正确设置。这是我的设置:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=yourusername
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls
请确保您的密码不在引号:)之间。
在config / mail.php中,它有以下内容,没有注释。
<?php
return [
'driver' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', '587'),
'from' => ['address' => 'yourusername', 'name' => 'yourname'],
'encryption' => env('MAIL_ENCRYPTION','tls'),
'username' => env('MAIL_USERNAME', '[email protected]'),
'password' => env('MAIL_PASSWORD', 'password'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
希望这对你有用 :)
在我的情况下:重新启动服务器并运行php artisan config:clear
命令。
对于laravel 5.1,我的.env文件配置是这样的
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls
这里最重要的是我创建了gmail应用程序专用密码(16位)。
我需要透露一件事,因为任何配置都没有运气。也就是说,每当我更改.env文件时都需要运行此命令
php artisan config:cache
这是最重要的,因为如果没有这个命令,laravel会从它的缓存执行以前的设置。我需要超过10个小时才能搞清楚。
您收到身份验证错误,因为配置文件中的用户名和密码设置错误。
改变这个:
'username' => env('[email protected]'),
'password' => env('MyPassword'),
对此:
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
env
方法检查您的.env文件。在你的.env文件中,你称之为MAIL_USERNAME
,这就是你需要传递给env
方法的东西。
一个故障排除提示:添加dd(Config::get('mail'));
,以便您可以看到实际生成的配置。这将帮助您发现这样的问题,并确切了解Laravel将尝试和使用的信息。因此,您可能希望暂时在测试路径中停止该操作以检查您拥有的内容:
Route::get('test', function()
{
dd(Config::get('mail'));
});
问题将通过清除缓存来解决
php artisan config:cache
终于有了!只是为了分享,有更多的配置而不仅仅是.env
这是.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=********
MAIL_ENCRYPTION=tls
config / mail.php还需要输入地址和名称才能正常工作。
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => '[email protected]' , 'name' => 'YourName' ],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
出于开发目的,https://mailtrap.io/为您提供了需要在.env文件中添加的所有设置。例如:
Host: mailtrap.io
Port: 25 or 465 or 2525
Username: cb1d1475bc6cce
Password: 7a330479c15f99
Auth: PLAIN, LOGIN and CRAM-MD5
TLS: Optional
否则出于实现目的,您可以从邮件中获取要添加到.env文件中的smtp凭据(如gmail n all)
添加后,请确保重新启动服务器
如果您遇到同样的麻烦并在线尝试所有内容并且它不起作用,则可能是发送错误信息的配置缓存文件。您可以在bootstrap / cache / config.php中找到它。确保凭据正确。我用了一个星期来搞清楚这一点。我希望有一天这会有所帮助。
它也发生在我身上。
这是因为当我们编辑
.env
文件时,我们需要重新启动服务器。只需停止当前的php artisan serve
并再次启动它。这肯定会起作用。
如果仍然没有工作尝试做php artisan config:cache
供将来参考的人参考。在你运行第三个答案中给出的命令后(我现在使用的是Laravel 5.3)。
php artisan config:cache
您可能会遇到此问题:
[ReflectionException]
Class view does not exist
在这种情况下,您需要手动将其添加回app.php文件下的提供者列表。 GO-TO:app->config->app.php->'providers[]'
并添加它,如下所示:
Illuminate\View\ViewServiceProvider::class,
希望这有助于某人。