Я пытаюсь отправить электронное письмо указанному пользователю, введя 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
Я знаю, что сейчас это работает для вас @ Vantheman6, но это то, что сработало для меня, на случай, если для кого-то это то же самое.
Я добавил в свой файл .env сведения о почтовой службе, которую я использую. Поэтому убедитесь, что следующие детали
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
в файле .env точны.
ПРИМЕЧАНИЕ. Не забудьте перезапустить ваш сервер после редактирования файла .env, чтобы он выбрал новые данные, которые вы туда поместили.
Если вы не перезапустите сервер, файл .env по-прежнему будет отображать старые почтовые данные в приложении, даже если вы внесли изменения, которые могут вызвать эту ошибку.
Моя конфигурация файла .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 часов, чтобы понять.
Вы получаете ошибку аутентификации, потому что имя пользователя и пароль в вашем конфигурационном файле установлены неправильно.
Изменить это:
'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
В противном случае для реализации вы можете получить учетные данные smtp для добавления в файл .env из почты (например, gmail n all)
После добавления обязательно перезагрузите сервер
Если у вас возникли те же проблемы, и вы все перепробовали в Интернете, и это не сработало, вероятно, файл кеша конфигурации отправляет неверную информацию. Вы можете найти его в bootstrap / cache / config.php. Убедитесь, что учетные данные прямо там. Мне потребовалась неделя, чтобы понять это. Я надеюсь, что это поможет кому-нибудь когда-нибудь.
Это происходит со мной тоже.
Это потому, что когда мы редактируем
.env
файл нам нужен для перезапуска сервера. Просто остановить токphp artisan serve
и начать это снова. Это будет работать наверняка.
Если все еще не работал, попробуйте сделать php artisan config:cache