Я пытаюсь отправить электронное письмо указанному пользователю, введя 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 часов, чтобы выяснить.
php artisan cache:clear
когда php artisan config:cache
решает эту проблему для меня. Спасибо!
php artisan config:cache
Вы получаете ошибку проверки подлинности, потому что имя пользователя и пароль в вашем файле конфигурации неправильно настроены.
Измените это:
'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'));
});
'password' => env('MAIL_PASSWORD'),
что мне кажется интересным, потому что везде мне говорят вводить ваши адрес электронной почты и пароль для этого. Я все еще получаю сообщение об ошибке Swift_TransportException in AbstractSmtpTransport.php line 383: Expected response code 250 but got code "530", with message "530 5.7.1 Authentication required. I'm sorry but where do i actually place the "
dd(Config::get('mail'));
, каталог Config содержит много файлов
проблема будет решена путем очистки кеша
php artisan config:cache
В целях развития 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)
После добавления обязательно перезапустите сервер
Наконец-то я получил! Просто чтобы поделиться, есть больше конфигурации, чем просто .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,
Если у вас есть такая же проблема и попробуйте все в Интернете, и это не сработает, возможно, файл конфигурации кэша отправляет неверную информацию. Вы можете найти его в bootstrap/cache/config.php. Убедитесь, что учетные данные указаны правильно. Мне потребовалась неделя, чтобы понять это. Надеюсь, это когда-нибудь поможет кому-нибудь.
Это случается и со мной.
Это потому, что, когда мы редактируем файл
.env
, нам нужно перезапустить сервер. Просто остановите текущийphp artisan serve
и запустите его еще раз. Это будет работать точно.
Если все еще не работает, сделайте php artisan config:cache
В будущем обратитесь к людям, которые приходят сюда. после запуска команды, указанной в третьем ответе здесь (теперь я использую Laravel 5.3).
php artisan config:cache
Вы можете столкнуться с этой проблемой:
[ReflectionException]
Class view does not exist
В этом случае вам нужно добавить его обратно вручную в список вашего провайдера в файле app.php. ИДТИ К:
app->config->app.php->'providers[]'
и добавьте его так:
Illuminate\View\ViewServiceProvider::class,
Надежда Это помогает кому-то.
Это просто означает, что ваш сервер не имеет доступа к SMTP-серверу.
Вы можете проверить это, выполнив:
telnet <smtpServer> <smtpPort>
Вы должны получить ошибку "Отказано в доступе".
Решение состоит в том, чтобы просто использовать другой SMTP-сервер, к которому ваш сервер может получить доступ.
У меня была такая же проблема; мой "MAIL_ENCRYPTION" был "tls" на mail.php, но он был "null" в .env файле поэтому я изменил 'null' на 'tls', и он сработает!
Вы должны перезагрузить сервер и выполнить следующие команды:
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache
Это должно работать.
Ни один из вышеперечисленных решений не работал у меня на 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
**************** MAIL_HOST = smtp.gmail.com ****************
Если ваши результаты от dd(Config::get('mail'));
являются нулевыми, просто используйте команду
php artisan config:clear
В моем случае: перезагрузите сервер и выполните команду php artisan config:clear
.
У меня та же проблема. Я исправил эти ошибки, перезапустив мой веб-сервер.
У меня была такая же проблема, как и вы, я просто получил ее для работы.
Во-первых, вам нужно дважды проверить правильность настроек .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,
];
Надеюсь, это сработает для вас:)