【问题标题】:How can I use persistant SMTP connection如何使用持久 SMTP 连接
【发布时间】:2012-04-22 19:31:01
【问题描述】:

我有一个 PHP 应用程序,它使用 CodeIgniter 电子邮件库类通过 SMTP 协议发送数千封电子邮件。问题是,对于发送的每封电子邮件,它都使用与 SMTP 服务器的新连接。在这种情况下如何使用持久连接?

例如,假设我发送了 1000 封电子邮件,然后我再次进行身份验证并再发送 1000 封电子邮件等等。

【问题讨论】:

    标签: php codeigniter smtp persistent


    【解决方案1】:

    由于我没有阅读您的代码,因此我将发布他们放入文档中的代码..

    $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 库,它可以解决你的大部分问题..

    【讨论】:

    • 我可能会在稍后阶段尝试使用 Swift-mailer 库,但目前,我正在寻找使用当前 CodeIgniter 电子邮件库的解决方案。我不确定这个功能(email->clear)如何帮助我实现持久的 SMTP 连接。我的目标是加快使用 SMTP 发送电子邮件的速度。类似于带有 phpmailer 库类的 SMTP Keep Alive 功能。
    • 是的。我已经在我的电子邮件发送代码中使用了该功能。它不能帮助我实现持久的 SMTP 连接
    【解决方案2】:

    就这么简单:

    忘记 CI 的 Email 库,除非您有耐心更改该类的核心......将属性 $SMTPKeepAlive 设置为 true,做你想做的事,然后调用 SmtpClose();

    我在这里使用 CI 实现了一个很好的实现,我将 SMTP 服务器保存在数据库中,并且所有邮件都由我编写的模型“ezfied”。

    Rgds

    【讨论】:

      【解决方案3】:

      尝试在您的电子邮件课程中使用“bcc_batch_mode”。

      查看这里了解更多信息:https://codeigniter.com/user_guide/libraries/email.html

      【讨论】:

      • 我无法使用 bcc_batch_mode。每封电子邮件都是唯一的,没有密件抄送地址可供使用。我只想避免对发送的每封电子邮件进行 SMTP 身份验证步骤。偶尔使用身份验证是可以的,但不是对每封电子邮件都使用。
      • 没有其他人可以访问您本地主机上的文档 - 我认为这是同一页 codeigniter.com/user_guide/libraries/email.html
      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      相关资源
      最近更新 更多