2011-08-30 75 views
0

我使用默認的codeIgniter郵件類,這對我發送郵件來說非常緩慢,從開始到結束需要3秒的時間。我可以做些什麼來讓用戶認爲它更快。我知道發送電子郵件需要時間,但是我可以先將結果顯示給用戶,然後發送給稍後或其他解決方法?謝謝。如何解決codeIgniter中發送緩慢的郵件?

+0

你在哪個代碼上做了這個基準測試?提交表單後整個頁面刷新? –

+0

是的,整個頁面刷新 – DNB5brims

回答

1

它不會是慢的類,它將是您嘗試連接到的SMTP郵件服務器,它會發送使頁面滯後的電子郵件。

假設它是某種形式,您可以使用AJAX提交它並讓接收腳本發送電子郵件。或者,您可以嘗試使用PHP郵件而不是SMTP。

0

我從來沒有見過與php的mail()函數有關的性能問題,這個函數在MTA中不是問題(因此與PHP無關)。

SMTP系統(MTA)是關於管理電子郵件隊列的。如果它不能及時地排隊消息,那麼它的主要目的就是失敗。

但是您沒有提供關於您正在使用的MTA,配置方式,運行PHP的操作系統以及如何在PHP中配置郵件界面的信息。

此外,標準codeigniter郵件類可以使用PHP郵件()函數,或直接操作系統調用SMTP郵件程序或網絡調用SMTP端口/服務器,而無需知道代碼是什麼做它很難理解問題是什麼。

如果您使用的是代碼中的SMTP端口連接,請檢查您的網絡服務器是否可以解析SMTP主機(及時)。否則,這是MTA的問題。

0

首先創建一個自定義配置文件中的application/config

email.php

在我的情況下,我通過網絡郵件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 
); 

並確保此配置是autoloaded.Open您Autoload.php內部應用程序/ config並寫

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

現在只要您創建一個具有控制器使用電子郵件library.use父許多方法contruct

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

} 

然後你就可以輕鬆的郵件只是

$this->email->from('[email protected]', 'Account'); 
$this->email->to('[email protected]'); 
$this->email->cc('[email protected]'); 
$this->email->bcc('[email protected]'); 
$this->email->subject('Account Confirmation'); 
$message = "any message body you want to send"; 
$this->email->message($message); 
$this->email->send(); 

這將減少2-3秒發送郵件時通過CI電子郵件庫。 謝謝