我使用的是默认的codeIgniter邮件类,这对我发送电子邮件来说非常慢,从开始到结束我需要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秒。 谢谢