我们的系统中有 500 个唯一用户,我们创建了一个通知系统,当其中一个部分有更新时,它将向所有用户发送纯文本电子邮件。系统使用 swiftmailer 并创建一个电子邮件对象,然后在发送之前密件抄送 500 个用户。
我只是想要一些保证,密件抄送 500 个用户意味着服务器会将这视为发送 1 封电子邮件,但会发送给很多用户。我不想遇到我的服务器主机设置的任何电子邮件限制限制。
我们的系统中有 500 个唯一用户,我们创建了一个通知系统,当其中一个部分有更新时,它将向所有用户发送纯文本电子邮件。系统使用 swiftmailer 并创建一个电子邮件对象,然后在发送之前密件抄送 500 个用户。
我只是想要一些保证,密件抄送 500 个用户意味着服务器会将这视为发送 1 封电子邮件,但会发送给很多用户。我不想遇到我的服务器主机设置的任何电子邮件限制限制。
它不会算作一封电子邮件。消息内容相同的事实无关紧要,因为您仍然有 500 个收件人。此外,您主机的电子邮件服务器可能会将每封邮件的密件抄送收件人数量限制在一个更合理的值上,所以如果您甚至可以做到这一点,我会感到惊讶。这种爆炸应该通过单独的消息发送。如果您的主机对音量犹豫不决,您可能不得不去像 Constant Contact 等的送货服务。
我还尝试使用这种密件抄送方法发送 1000 封电子邮件,似乎对我的限制在 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);
}
我希望这有助于解决您的问题,因为它是一个更简单的解决方案。