2015-09-21 2 views
29

Я использую функцию Laravel Mail для отправки электронной почты. Ниже приведены настройки файла app/config/mail.php.Ожидаемый код ответа 220, но получил код "", с сообщением "" в Laravel

'driver' => 'sendmail', 
'host' => 'smtp.gmail.com', 
'port' => 587, 
'from' => array('address' => '[email protected]', 'name' => 'MyName'), 
'encryption' => 'tls', 
'username' => 'myUsername', 
'password' => "password", 
'sendmail' => '/usr/sbin/sendmail -bs', 
'pretend' => false, 

Контроллер почты Метод

//Send Mail  
Mail::send('sendMail', array('key' => 'value'), function($message) 
{ 
    $message->to('[email protected]', 'Sender Name')->subject('Welcome!'); 
}); 

Когда я запускаю код это дает мне следующее сообщение об ошибке:

Swift_TransportException

Ожидаемый код 220 ответа, но получил код "", с сообщением ""

Я создал файл SendMail.php, который содержит некоторые данные.

Как устранить это сообщение об ошибке?

+0

Вы включили двухэтапную аутентификацию для учетной записи gmail, которую используете? – Sid

ответ

50

Эта проблема может возникнуть, если вы не включили двухэтапную аутентификацию для учетной записи gmail, которую используете для отправки email. Итак, во-первых, включите two step verification, вы можете найти множество ресурсов для включения двухэтапной аутентификации. После его включения вам необходимо создать app password. И используйте app password в файле .env. Когда вы закончите с этим, ваш файл .env будет выглядеть примерно так.

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
MAIL_USERNAME=<<your email address>> 
MAIL_PASSWORD=<<app password>> 
MAIL_ENCRYPTION=tls 

и ваш mail.php

<?php 

return [ 
    'driver' => env('MAIL_DRIVER', 'smtp'), 
    'host' => env('MAIL_HOST', 'smtp.gmail.com'), 
    'port' => env('MAIL_PORT', 587), 
    'from' => ['address' => '<<your email>>', 'name' => '<<any name>>'], 
    'encryption' => env('MAIL_ENCRYPTION', 'tls'), 
    'username' => env('MAIL_USERNAME'), 
    'password' => env('MAIL_PASSWORD'), 
    'sendmail' => '/usr/sbin/sendmail -bs', 
    'pretend' => false, 

]; 

После этого запустите php artisan config:cache и php artisan config:clear, а затем проверить, электронная почта должна работать.

+0

nope! не работает –

+0

Я повсюду искал и не мог найти решение, но вы полностью спасли мою жизнь !!. Огромное спасибо!!. Я голосую за ваш ответ! – HenryDev

+0

рад, что это помогло :) – Sid

8

В моем случае я должен был установить

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
MAIL_USERNAME=<<your email address>> 
MAIL_PASSWORD=<<app password>> 

MAIL_ENCRYPTION= ssl <<<<<<<------------------------- (FOCUS THIS) 

работать это .. Может быть полезно. Остальная часть кода была такой же, как @Sid. Единственное отличие состоит в

MAIL_ENCRYPTION= ssl 

И я не думаю, что редактирование как файл среды и приложение/Config/mail.php ненужно. Просто используйте один метод.