Попытка получить письмо Laravel 5 на работу

Я пытаюсь отправить электронное письмо указанному пользователю, введя URL-адрес, но получаю следующую ошибку:

Swift_TransportException в строке AbstractSmtpTransport.php 383: ожидаемый код ответа 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

Ответ 1

Я знаю, что он работает для вас сейчас @Vantheman6, но это то, что сработало для меня, если оно будет таким же для кого-то другого.

Я добавил в свой .env файл сведения о почтовой службе, которую я использую. Поэтому убедитесь, что следующие данные

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword

в файле .env являются точными.

ПРИМЕЧАНИЕ. Не забудьте перезагрузить сервер после редактирования .env файла, чтобы он отобрал новые данные, которые вы там разместили.

Если вы не перезагрузите сервер, файл .env по-прежнему будет продолжать отправлять старые почтовые данные в приложение, даже если вы внесли изменения, которые могут вызвать эту ошибку.

Ответ 2

Конфигурация моего .env файла похожа на laravel 5.1

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 часов, чтобы выяснить.

Ответ 3

Вы получаете ошибку проверки подлинности, потому что имя пользователя и пароль в вашем файле конфигурации неправильно настроены.

Измените это:

'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'));
});

Ответ 4

проблема будет решена путем очистки кеша

php artisan config:cache

Ответ 5

Наконец-то я получил! Просто чтобы поделиться, есть больше конфигурации, чем просто .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,

Ответ 6

В целях развития 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

В противном случае вы можете получить учетные данные smtp, которые будут добавлены в .env файл из почты (например, gmail n)

После добавления обязательно перезапустите сервер

Ответ 7

Если у вас есть такая же проблема и попробуйте все в Интернете, и это не сработает, возможно, файл конфигурации кэша отправляет неверную информацию. Вы можете найти его в bootstrap/cache/config.php. Убедитесь, что учетные данные указаны правильно. Мне потребовалась неделя, чтобы понять это. Надеюсь, это когда-нибудь поможет кому-нибудь.

Ответ 8

Это случается и со мной.

Это потому, что, когда мы редактируем файл .env, нам нужно перезапустить сервер. Просто остановите текущий php artisan serve и запустите его еще раз. Это будет работать точно.

Если все еще не работает, сделайте php artisan config:cache

Ответ 9

В будущем обратитесь к людям, которые приходят сюда. после запуска команды, указанной в третьем ответе здесь (теперь я использую Laravel 5.3).

php artisan config:cache

Вы можете столкнуться с этой проблемой:

[ReflectionException]
Class view does not exist

В этом случае вам нужно добавить его обратно вручную в список вашего провайдера в файле app.php. ИДТИ К: app->config->app.php->'providers[]' и добавьте его так:

Illuminate\View\ViewServiceProvider::class,

Надежда Это помогает кому-то.

Ответ 10

У меня была такая же проблема; мой MAIL_ENCRYPTION был tls на mail.php, но это было null на .env файл.
Так что я изменил null на tls и это сработало!

Ответ 11

Это просто означает, что ваш сервер не имеет доступа к SMTP-серверу.

Вы можете проверить это, выполнив:

telnet <smtpServer> <smtpPort>

Вы должны получить ошибку "Отказано в доступе".

Решение состоит в том, чтобы просто использовать другой SMTP-сервер, к которому ваш сервер может получить доступ.

Ответ 12

Ни один из вышеперечисленных решений не работал у меня на localhost. Я даже разрешал доступ из менее безопасных приложений, разрешал доступ через разблокировку разблокировки экрана и устанавливал проверку сверстника и проверял одноранговое имя на false для SSL.

В конце концов, я использовал SMTP-решение с открытым исходным кодом MailHog. Эти шаги заключаются в следующем:

MAIL_DRIVER = SMTP

MAIL_HOST = 127.0.0.1

MAIL_PORT = 1025

MAIL_USERNAME = testuser

MAIL_PASSWORD = testpwd

MAIL_ENCRYPTION = null

[email protected]

  1. Запустите загруженный файл MailHog
  2. Отправить Email
  3. Проверить отправленное письмо, перейдя на localhost: 8025

Ответ 13

Вы должны перезагрузить сервер и выполнить следующие команды:

php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache

Это должно работать.

Ответ 14

Если ваши результаты от dd(Config::get('mail')); являются нулевыми, просто используйте команду

php artisan config:clear

Ответ 15

**************** MAIL_HOST = smtp.gmail.com ****************

Ответ 16

У меня была такая же проблема, как и вы, я просто получил ее для работы.

Во-первых, вам нужно дважды проверить правильность настроек .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,

];

Надеюсь, это сработает для вас:)

Ответ 17

У меня та же проблема. Я исправил эти ошибки, перезапустив мой веб-сервер.

Ответ 18

В моем случае: перезагрузите сервер и выполните команду php artisan config:clear.

Ответ 19

  • Вы переходите к Mailgun
  • Нажмите "Авторизованные получатели"
  • Добавьте адрес электронной почты, который вы хотите отправить.
  • Проверьте сообщение, отправленное по почте.
  • Браво!... Тебе хорошо идти.