У меня есть фрагмент кода 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 открытым? Если да, как мне это отключить?