Php Swiftmailer BCCing 500用户
我们的系统中有500个独特的用户,我们创建了一个通知系统,当其中一个部分有更新时,该系统将向所有用户发送一封纯文本电子邮件。该系统使用swiftmailer创建电子邮件对象,然后在发送之前以密件传给500名用户Php Swiftmailer BCCing 500用户,php,email,swiftmailer,Php,Email,Swiftmailer,我们的系统中有500个独特的用户,我们创建了一个通知系统,当其中一个部分有更新时,该系统将向所有用户发送一封纯文本电子邮件。该系统使用swiftmailer创建电子邮件对象,然后在发送之前以密件传给500名用户 我只是想让大家放心,BCSCIN 500用户意味着服务器会认为这是发送1封电子邮件,但对很多用户来说。我不想遇到我的服务器主机设置的任何电子邮件限制。它不会算作一封电子邮件。邮件内容相同这一事实与此无关,因为您仍然有500个收件人。此外,您的主机的电子邮件服务器可能会将每条邮件的密件抄送
我只是想让大家放心,BCSCIN 500用户意味着服务器会认为这是发送1封电子邮件,但对很多用户来说。我不想遇到我的服务器主机设置的任何电子邮件限制。它不会算作一封电子邮件。邮件内容相同这一事实与此无关,因为您仍然有500个收件人。此外,您的主机的电子邮件服务器可能会将每条邮件的密件抄送收件人数量限制在一个更合理的值,因此如果您能够做到这一点,我会感到惊讶。这种爆炸应该通过单独的消息发送。如果你的主机对数量感到不满意,你可能不得不去像Continuous 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);
}
我希望这能帮助解决您的问题,因为这是一个更简单的解决方案。目前仍有500名用户收到电子邮件,因此将计算为500封电子邮件。您只提交一封电子邮件,但500封电子邮件会在另一端发出。谢谢。创建一个db表,将每个电子邮件添加为一行,并使用cron脚本处理它们,这是一种更好的方法吗?也许每5/10秒发送一封电子邮件?这几乎肯定不会更好——这是一大堆额外的工作,增加了不必要的复杂性,几乎不会给你带来任何好处,因为任何现代邮件服务器都应该能够在不打嗝的情况下排队500封电子邮件。如果你的主机节制了你,你可以简单地在你的发送循环的每一次迭代中添加一个微小的延迟(每长5-10秒)——不需要在中间添加一个数据库。