Пытаюсь сделать что Laravel 5 по электронной почте для работы
Я пытаюсь отправить электронное письмо указанному пользователю, введя URL-адрес, но я получаю следующую ошибку:
Swift_TransportException в AbstractSmtpTransport.php строка 383:
Ожидаемый код ответа 250, но получил код "530", с сообщением "530 5.7.1
Требуется аутентификация
до сих пор я просто пытаюсь заставить его работать с Gmail. Как я могу заставить это работать?
это то, что у меня есть до сих пор: почта.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 file:
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=MyPassword
17 ответов:
Я знаю, что это работает для вас сейчас @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'),The
envметод проверяет ваш .env file. В вашем .env файл вы называете этиMAIL_USERNAME, так вот что вам нужно передатьenvметод.один совет по устранению неполадок: добавить
dd(Config::get('mail'));, так что вы можете видеть фактическая сгенерированная конфигурация. Это вам поможет найдите такие проблемы и точно знайте, какую информацию Laravel собирается попробовать и использовать. Поэтому вы можете временно остановить это в своем тестовом маршруте, чтобы проверить, что у вас есть:Route::get('test', function() { dd(Config::get('mail')); });
для целей развития https://mailtrap.io/ предоставляет вам все настройки ,которые необходимо добавить.env file. Например:
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 все)
после добавления обязательно перезапустить сервер
Если у вас когда-нибудь возникнут такие же проблемы и вы попробуете все в интернете, и это не сработает, вероятно, это файл кэша конфигурации, который отправляет неправильную информацию. Вы можете найти его в bootstrap/cache/config.РНР. Убедитесь, что учетные данные в порядке. Мне потребовалась неделя, чтобы понять это. Надеюсь, это поможет кто-нибудь.
наконец-то я получил! Просто поделиться, есть больше конфигурации, чем просто .env
Это .env
MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 [email protected] MAIL_PASSWORD=******** MAIL_ENCRYPTION=tlsconfig / 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,
это случается и со мной.
Это потому, что когда мы редактируем
.envфайл нам нужно перезапустить сервер. Просто остановите токphp artisan serveи запустить его снова. Это точно сработает.если все еще не работал попробуйте сделать
php artisan config:cache
для дальнейшего обращения к людям, которые приходят сюда. после выполнения команды, которая была дана в третьем ответе здесь (Я использую сейчас Laravel 5.3).
php artisan config:cacheвы можете столкнуться с этой проблемой:
[ReflectionException] Class view does not existв этом случае вам нужно добавить его вручную в список поставщиков в приложении.PHP-файл. ОБРАТИТЬСЯ:
app->config->app.php->'providers[]'и добавить его, например, так:Illuminate\View\ViewServiceProvider::class,надеюсь, что это поможет кому-то.
У меня была та же проблема; мой 'MAIL_ENCRYPTION' был 'tls' на почте.php, но он был "нулевым".файл env поэтому я изменил "null" на "tls", и это сработало!
это просто означает, что ваш сервер не имеет доступа к SMTP-серверу.
вы можете проверить это, выполнив
telnet <smtpServer> <smtpPort>вы должны получить сообщение об ошибке отказано в доступе.
решение состоит в том, чтобы использовать другой SMTP-сервер, к которому может получить доступ ваш сервер.
ни одно из вышеперечисленных решений не работало для меня на localhost. Я даже позволила доступ из менее безопасных приложений, которым разрешен доступ через дисплей разблокировки капчи и установить проверить сверстников и проверьте имя узла ложные для SSL.
В конце концов, я использовал решение для тестирования SMTP с открытым исходным кодом MailHog. Шаги заключаются в следующем:
- загрузите последнюю версию MailHog для своей ОС
- укажите следующие настройки в вашем .ОКР файл
MAIL_DRIVER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025
MAIL_USERNAME=testuser
MAIL_PASSWORD=testpwd
MAIL_ENCRYPTION=null
- запустите загруженный файл MailHog
- Отправить По Электронной Почте
- Проверьте отправленную электронную почту, Перейдя на localhost: 8025
Если ваши результаты от
dd(Config::get('mail'));are null просто используйте команду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, ];надеюсь, что это работает для вас :)
вы должны перезагрузить сервер и выполнить эти команды:
php artisan cache:clear php artisan view:clear php artisan route:clear php artisan config:clear php artisan config:cacheЭто должно сработать.
- вы идете в Mailgun
- Щелкните Авторизованные Получатели
- добавьте адрес электронной почты, на который вы хотите отправить почту.
- Проверьте сообщение, отправленное на почту.
- Браво!...Ты можешь идти.
Comments