如何在codeIgniter中解决发送邮件的速度慢?

时间:2011-08-30 16:01:04

标签: php email codeigniter

我使用的是默认的codeIgniter邮件类,这对我发送电子邮件来说非常慢,从开始到结束我需要3秒钟。我可以做些什么来让用户认为它更快。我知道发送电子邮件需要时间,但我可以先向用户显示结果,然后发送到以后或其他解决方法吗?谢谢。

3 个答案:

答案 0 :(得分:1)

它不会是速度慢的类,它将是您尝试连接的SMTP邮件服务器,它会发送使页面滞后的电子邮件。

假设它是某种形式,您可以使用AJAX提交它并让接收脚本发送电子邮件。或者,您可以尝试使用PHP邮件而不是SMTP。

答案 1 :(得分:0)

我从未见过与php的mail()函数相关的性能问题报告,这在MTA中不是问题(因此与PHP无关)。

SMTP系统(MTA)就是管理电子邮件队列。如果它不能及时将消息排入队列,那么它的主要目的就是失败。

但是您没有提供有关您正在使用的MTA,如何配置,运行PHP的操作系统以及如何在PHP中配置邮件界面的信息。

除此之外,标准codeigniter邮件类可以使用PHP mail()函数,或者直接OS调用SMTP邮件程序或对SMTP端口/服务器进行网络调用,而不知道代码在做什么它很难理解问题所在。

如果您使用代码中的SMTP端口连接,请检查您的网络服务器是否可以解析SMTP主机(及时)。否则,这是MTA的问题。

答案 2 :(得分:0)

首先创建一个自定义配置文件

application.php在application / config

在我的情况下,我通过网络邮件ID发送电子邮件,所以这是我的email.php

$config = Array(
    'protocol' => 'smtp',
    'smtp_host' => 'SMTP_HOST_NAME',
    'smtp_port' => 25,
    'smtp_user' => 'SMTP_USER_NAME', // change it to yours
    'smtp_pass' => 'SMTP_PASSWORD', // change it to yours
    'mailtype' => 'html',
    'charset' => 'iso-8859-1',
    'wordwrap' => TRUE
);

然后确保此配置已自动加载。在application / config中打开Autoload.php并编写

$autoload['config'] = array('email');

现在,无论何时使用电子邮件库创建具有多种方法的控制器,请使用parent contruct

function __construct()
{
  parent::__construct();          
  $this->load->library('email', $config);

}

然后你可以轻松地邮寄

$this->email->from('info@example.net', 'Account');
 $this->email->to('johndoe@example.com');
 $this->email->cc('johndoe@example.com');
 $this->email->bcc('johndoe@example.com');
 $this->email->subject('Account Confirmation');
 $message = "any message body you want to send";
 $this->email->message($message);
 $this->email->send();

通过CI电子邮件库发送邮件时,这会减少2-3秒。 谢谢