Symfony Ошибка Sfit Swfitmailer на втором письме в течение 25 минут - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть фрагмент кода Symfony, который

  • отправляет электронное письмо
  • выполняет запрос SQL, который занимает около 25 минут
  • отправляет другой email

На втором письме я всегда получаю следующее сообщение об ошибке:

In AbstractSmtpTransport.php line 457:

  Expected response code 250 but got code "451", with message "451 4.4.2 Timeout waiting for data from client.  
  "                                                                                                             

Мой код выглядит следующим образом:

public function rebuild()
{
    $twig = clone $this->twig;

    /** @var Setting $setting */
    $setting = $this->em->getRepository(Setting::class)->find(1);

    $usersToNotify = $this->em->getRepository(User::class)->findBy([
        'notify_card_data_rebuild' => 1
    ]);
    $timetrack = microtime(true);

    foreach ($usersToNotify as $user) {
        /** @var $user User */
        $message = new \Swift_Message();
        $message
            ->setFrom('info@meezysolutions.com')
            ->setSubject($twig->createTemplate($setting->getCardDataRebuildStartEmailSubject())->render([
                'user' => $user
            ]))
            ->setTo($user->getEmail(), $user->getFirstname() . ' ' . $user->getLastname())
            ->setBody($twig->createTemplate($setting->getCardDataRebuildStartEmailMessage())->render([
                'user' => $user
            ]));
        $this->mailer->send($message);
    }

...
$sql = '25 Minute query';

    $this->em->getConnection()->exec($sql);

    $endtime = microtime(true);
    foreach ($usersToNotify as $user) {
        /** @var $user User */
        $message = new \Swift_Message();
        $message
            ->setFrom('info@meezysolutions.com')
            ->setSubject($twig->createTemplate($setting->getCardDataRebuildCompleteEmailSubject())->render([
                'user' => $user
            ]))
            ->setTo($user->getEmail(), $user->getFirstname() . ' ' . $user->getLastname())
            ->setBody($twig->createTemplate($setting->getCardDataRebuildCompleteEmailMessage())->render([
                'user' => $user,
                'time_taken' => $endtime-$timetrack
            ]));
        $this->mailer->send($message);
    }

Конфигурация Swiftmailer как указано ниже, MAILER_URL включает SMTP-данные для AWS SES

bin / console debug: config SwiftmailerBundle

Current configuration for "SwiftmailerBundle"
=============================================

swiftmailer:
    default_mailer: default
    mailers:
    default:
    url: '%env(MAILER_URL)%'
    transport: smtp
    command: '/usr/sbin/sendmail -bs'
    username: null
    password: null
    host: localhost
    port: null
    timeout: 30
    source_ip: null
    local_domain: null
    encryption: null
    auth_mode: null
    delivery_addresses: {  }
    logging: true
    delivery_whitelist: {  }

Поддерживает ли Swiftmailer соединение с SES открытым? Если да, как мне это отключить?

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