Laravel 5.5 отправка почты по gmail, настройка из базы данных - PullRequest
0 голосов
/ 07 июня 2018

У меня есть функция для отправки писем, и она обычно работает.Теперь я хочу установить конфигурацию для Gmail и вижу ошибку "ожидаемый код ответа 250, но получил код" 530 "с сообщением" 530-5.5.1 Требуется аутентификация.Узнайте больше на \ r \ n 530 5.5.1 https://support.google.com/mail/?p=WantAuthError"

Я разблокировал капчу и учел менее безопасные приложения.Когда я использую конфигурацию .env, все работает.Но в моем случае я пытаюсь установить конфигурацию из базы данных.

protected function makeEmail($config, $data){
  try{
    $account =  Settings::getEmailItem($config->account);
    Config::set('mail.driver','smtp');
    Config::set('mail.host',$account['host']);
    Config::set('mail.port',$account['port']);
    Config::set('mail.password',$account['password']);
    Config::set('mail.username',$account['username']);
    Config::set('mail.from.name',$account['from']);
    Config::set('mail.from.address',$account['username']);
    //Config::set('mail.encryption','tls');

    $app = App::getInstance();
    $app->singleton(TransportManager::class, function($app){
      return new TransportManager($app);
    });

    $mailer = new Swift_Mailer($app['swift.transport']->driver());
    Mail::setSwiftMailer($mailer);

    $recipients =  collect(explode(',',$config->recipients))->map(function($recipient) use($data){
      $matches;
      if(preg_match('/^{{\$(.+)}}/',trim($recipient),$matches)){
        if(array_key_exists($matches[1],$data)){
          return $data[$matches[1]];
        }
      }else{
        return $recipient;
      }
    })->all();
    //dd(config('mail'));
    Mail::to($recipients)->send(new SendFreeEmail($config, $data));
  }catch(\Exception $e){
    dd($e->getMessage(), $e->getCode(), $e->getLine(), $e->getFile());
  }

Когда я отображаю config('mail'), есть мои данные из базы данных.

Ниже приведено изображение из dd(config('mail'))

enter image description here

Заранее благодарим за любые подсказки.

РЕДАКТИРОВАТЬ: Я решил эту проблему, но это странно,Когда я устанавливаю в качестве драйвера "sendemail" в качестве драйвера, он работает.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Кажется, ваши конфигурации кэшируются.php artisan config:clear команда должна решить вашу проблему.

Документация Laravel гласит:

Если вы выполняете команду config: cache во время процесса развертывания, вы должны быть уверены, что вызываете функцию env только из ваших файлов конфигурации.После того, как конфигурация будет кэширована, файл .env не будет загружен, и все вызовы функции env вернут ноль.

0 голосов
/ 07 июня 2018

Вы настраивали настройки своей учетной записи Gmail?

Необходимо оставить Разрешить менее безопасные приложения: ВКЛ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...