Невозможно отправить письмо в laravel на сервере

У меня есть следующая конфигурация в файле среды,

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD='mypassword'
MAIL_ENCRYPTION=ssl

Я сделал регистрацию пользователя от RegistrationController и отправьте письмо, чтобы подтвердить этого пользователя. Он отлично работает на локальном сервере LAMP с убанту. Но следующая ошибка встречается в C Panel.

Swift_TransportException Соединение не может быть установлено с
host smtp.gmail.com [Сеть недоступна # 101]

Вот функция регистра в контроллере,

protected function register(Request $request)
{
/** @var User $user */
$validatedData = $request->validate([
'name'     => 'required|string|max:255',
'email'    => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
]);

try {
$validatedData['password']      = bcrypt(array_get($validatedData, 'password'));
$validatedData['activate_code'] = str_random(30).time();
if($request->has('company') && $request->company=='on')
{
$validatedData['role_id']   = 4;
}
else
{
$validatedData['role_id']   = 5;
}
$user                           = app(User::class)->create($validatedData);
} catch (\Exception $exception) {
logger()->error($exception);
return redirect()->back()->with('alert-danger', 'Unable to create new user.');
}

$user->notify(new UserRegisteredSuccessfully($user));
return redirect()->back()->with('alert-success', 'Successfully created a new account. Please check your email and activate your account.');
}

Я уже видел такие проблемы и много вопросов, но ни один не работает в моем случае. Любая помощь приветствуется.

1

Решение

Обновите свой .env файл как:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD='mypassword'
MAIL_ENCRYPTION=tls
1

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

Прежде всего, после того, как вы создали учетную запись Gmail для рассылки с вашего веб-сайта, вы должны дать разрешение вашей учетной записи Gmail для рассылки из другого приложения.
сделать это…

1) зайдите в свой аккаунт Gmail и нажмите «settings -> FORWARDING and POP/IMAPссылку. И следуйте этим инструкциям, как на картинке ниже …

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

2) перейти по этой ссылке https://myaccount.google.com/lesssecureapps?utm_source=google-account&utm_medium=web
и включите это как на картинке ниже …

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

3) убедитесь, что ваше веб-приложение работает по протоколу http MAIL_ENCRYPTION=tls а также MAIL_PORT=587 иначе MAIL_ENCRYPTION=ssl а также MAIL_PORT=465

1

Вам нужно внести некоторые изменения в конфигурацию .env и в свою учетную запись.

1) Измените почтовый порт на 587 и шифрование

 MAIL_PORT=587
MAIL_ENCRYPTION=tls

2) Включите IMAP в вашей учетной записи электронной почты, чтобы использовать этот протокол

3) Разрешить доступ приложения к своей учетной записи

0

менять MAIL_DRIVER=smtp в MAIL_DRIVER=sendmail

После завершения .env отредактируйте, введите эту команду в своем терминале для очистки кэша: php artisan config:cache

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector