Попытка заставить электронную почту 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

138

Решение

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

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

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

в файле .env точны.

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

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

220

Другие решения

Моя конфигурация файла .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 часов, чтобы понять.

44

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

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

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

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

php artisan config:cache
12

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

Для целей развития 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 all)

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

9

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

8

Это происходит со мной тоже.

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

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

7
По вопросам рекламы [email protected]