我有一个 PHP 应用程序,它使用 CodeIgniter 电子邮件库类通过 SMTP 协议发送数千封电子邮件。问题是,对于发送的每封电子邮件,它都使用与 SMTP 服务器的新连接。在这种情况下如何使用持久连接?
例如,假设我发送了 1000 封电子邮件,然后我再次进行身份验证并再发送 1000 封电子邮件,依此类推。
我有一个 PHP 应用程序,它使用 CodeIgniter 电子邮件库类通过 SMTP 协议发送数千封电子邮件。问题是,对于发送的每封电子邮件,它都使用与 SMTP 服务器的新连接。在这种情况下如何使用持久连接?
例如,假设我发送了 1000 封电子邮件,然后我再次进行身份验证并再发送 1000 封电子邮件,依此类推。
像这样简单:
忘记 CI 的电子邮件库,除非您耐心地更改类的核心......作为一个不错的选择,使用 PHPMailer 类,将它放在您的 CI/Application/libraries 中,然后您只需要设置属性$SMTPKeepAlive 为真,做你想做的事,然后调用 SmtpClose();
我在这里使用 CI 有一个很好的实现,我将 SMTP 服务器保存在数据库中,并且所有邮件都是由我编写的模型“ezfied”的。
Rgds
由于我没有阅读您的代码,因此我将发布他们放入文档中的代码..
$this->email->clear()
将所有电子邮件变量初始化为空状态。如果您在循环中运行电子邮件发送功能,则可以使用此功能,允许在循环之间重置数据。
foreach ($list as $name => $address)
{
$this->email->clear();
$this->email->to($address);
$this->email->from('your@example.com');
$this->email->subject('Here is your info '.$name);
$this->email->message('Hi '.$name.' Here is the info you requested.');
$this->email->send();
}
如果这对你不起作用,我还有另一件事比内置邮件类更合适,老实说更好,尝试使用Swift-mailler库,它可以解决你的大部分问题..
尝试在您的电子邮件类中使用“bcc_batch_mode”。
有关更多信息,请参见此处:https ://codeigniter.com/user_guide/libraries/email.html