Невозможно отправить письмо в laravel на сервере - PullRequest
0 голосов
/ 20 декабря 2018

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

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 Не удалось установить соединение с хостом 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.');
}

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

Ответы [ 4 ]

0 голосов
/ 20 декабря 2018

изменить MAIL_DRIVER=smtp на MAIL_DRIVER=sendmail

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

0 голосов
/ 20 декабря 2018

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

1) перейдите в свою учетную запись gmail и нажмите ссылку "settings -> FORWARDING and POP/IMAP".И следуйте этим инструкциям, как на картинке ниже ...

enter image description here

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

enter image description here

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

0 голосов
/ 20 декабря 2018

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

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

 MAIL_PORT=587
 MAIL_ENCRYPTION=tls

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

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

0 голосов
/ 20 декабря 2018

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

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