Пытаюсь сделать что 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
825   17  

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 все)

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

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

php artisan config:cache

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

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

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

Это потому, что когда мы редактируем .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. Шаги заключаются в следующем:

  1. загрузите последнюю версию MailHog для своей ОС
  2. укажите следующие настройки в вашем .ОКР файл

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. Отправить По Электронной Почте
  3. Проверьте отправленную электронную почту, Перейдя на 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

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

  1. вы идете в Mailgun
  2. Щелкните Авторизованные Получатели
  3. добавьте адрес электронной почты, на который вы хотите отправить почту.
  4. Проверьте сообщение, отправленное на почту.
  5. Браво!...Ты можешь идти.

Comments

    Ничего не найдено.