Swiftmailer BCCing 500 пользователей
В нашей системе 500 уникальных пользователей, и мы создали систему уведомлений, которая будет отправлять всем пользователям текстовое электронное письмо при обновлении одного из разделов. Система использует swiftmailer и создает объект электронной почты, а затем отправляет 500 пользователей BCC перед отправкой.
Я просто хочу заверить, что пользователи BCCing 500 означают, что сервер будет рассматривать это как отправку 1 электронного письма, но большому количеству пользователей. Я не хочу сталкиваться с какими-либо ограничениями электронной почты, установленными хостом моего сервера.
2 ответа
Это не будет считаться одним письмом. Тот факт, что содержание сообщения одно и то же, не имеет значения, поскольку у вас еще есть 500 получателей. Кроме того, почтовый сервер вашего хоста, вероятно, ограничивает число получателей BCC на сообщение более разумным значением, поэтому я был бы удивлен, если бы вы вообще могли это сделать. Этот вид взрыва должен быть отправлен через отдельные сообщения. Если ваш хост отказывается от тома, вам, вероятно, придется обратиться в службу доставки, например, Constant Contact et al.
Я также попытался отправить 1000 электронных писем, используя этот метод BCC, и мне показалось, что ограничение для меня составляет около 100 писем. Так что не используйте это. Вместо этого попробуйте использовать плагин, который предоставляет SwiftMailer.
Вот пример кода:
$mailer = Swift_Mailer::newInstance(
Swift_SmtpTransport::newInstance('smtp.example.org', 25)
);
// Use AntiFlood to re-connect after 100 emails
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(100));
// And specify a time in seconds to pause for (30 secs)
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(100, 30));
$content = 'email body'
$message = Swift_Message::newInstance('Email subject')
->setFrom(array('no-reply@email.com'=> 'From me'))
->setBody($content,'text/html');
$emails = array('email1@email.com','email2@email.com','email3@email.com');
foreach($emails as $recipient){
$message->setTo($recipient);
$mailer->send($message);
}
Я надеюсь, что это поможет с вашей проблемой в качестве более простого решения.