laravel电子邮件不是从localhost发送的

时间:2017-09-07 23:25:45

标签: laravel login

我正在使用最新的php版本和laravel 5.4的xampp(windows)。这是我的.env设置

MAIL_DRIVER = smtp 
MAIL_HOST = smtp.gmail.com
MAIL_PORT = 587
MAIL_USERNAME = myemail@gmail.com
MAIL_PASSWORD = mypassword
MAIL_ENCRYPTION = tls

和控制器代码

use Mail;
Mail::send('mail.login-verificatio', $data, function($message) use($email_to) 
{
$message->to($email_to, '')->subject
    ('Login Security Number');
$message->from('myemail@gmail.com','xxxxxxxxxxx');
 });

但是我发现了以下错误

ErrorException
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

感谢

2 个答案:

答案 0 :(得分:0)

这意味着您的SSL配置不正确(或者根本没有SSL配置)。此错误不是来自 Laravel 它来自PHP本身。 PHP未验证您的SSL配置。

要解决此问题,请执行以下操作之一;

1)正确配置 SSL ,以便PHP验证

2)使用PHP mail()功能,默认情况下不需要 SSL 。您可以将其与Swiftmailer一起使用,也可以在此链接http://core.wp-a2z.org/oik_api/phpmailerismail/

中查看isMail

3)如果是出于测试目的,将.ENV文件配置为记录电子邮件,而不是smtp

额外:我建议您使用https://mailtrap.io/进行测试,而不是使用gmail,这会给您带来很多不同的好处。

答案 1 :(得分:0)

请尝试遵循以下方法:

1)您可以在config / mail.php文件中使用以下代码。

'stream' => [
'ssl' => [
    'allow_self_signed' => true,
    'verify_peer' => false,
    'verify_peer_name' => false,
  ],
],

2)尝试删除config / mail.php文件中的TLS。

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