2012-04-10 80 views
0

我有一個使用CodeIgniter電子郵件庫類的PHP應用程序通過SMTP協議發送數千封電子郵件。問題是,對於發送的每封電子郵件,它都會使用與SMTP服務器的全新連接。在這種情況下如何使用持久連接?如何使用持續的SMTP連接

例如,假設我發送1000封電子郵件,然後再次進行身份驗證併發送1000封電子郵件等等。

回答

0

嘗試在您的電子郵件類中使用「bcc_batch_mode」。

這裏看到更多的信息:https://codeigniter.com/user_guide/libraries/email.html

+0

我不能使用bcc_batch_mode。每封電子郵件都是唯一的,並且沒有BCC地址可供​​使用。我只是想爲每個發送的電子郵件避免SMTP驗證步驟。偶爾使用身份驗證是可以的,但不適用於每個電子郵件。 – 2012-04-10 14:07:06

+1

沒有其他人可以訪問您的本地主機上的文檔 - 我認爲這是相同的頁面http://codeigniter.com/user_guide/libraries/email.html – 2012-04-10 14:20:19

0

,因爲我沒有看你的代碼,我要發佈他們已經把文檔中的一個..

$這個 - >的電子郵件 - >清除()

將所有電子郵件變量初始化爲空狀態。如果您在循環中運行電子郵件發送功能,則允許在循環之間重置數據。

foreach ($list as $name => $address) 
{ 
    $this->email->clear(); 

    $this->email->to($address); 
    $this->email->from('[email protected]'); 
    $this->email->subject('Here is your info '.$name); 
    $this->email->message('Hi '.$name.' Here is the info you requested.'); 
    $this->email->send(); 
} 

,如果用你這個沒有工作,我有另一件事這是更爲合適的,老實說比內置的郵件類爲佳,儘量使用Swift-mailler庫,可以解決大部分你的問題..

+0

我可能會嘗試在稍後階段的Swift郵件庫,但目前,我正在尋找使用當前CodeIgniter電子郵件庫的解決方案。我不確定這個函數(email-> clear)怎麼能幫助我實現持久的SMTP連接。我的目標是加快使用SMTP的電子郵件發送。類似SMTP Keep Alive功能的phpmailer庫類。 – 2012-04-11 05:54:20

+0

你有沒有試過我的代碼?我只想知道結果 – zaherg 2012-04-11 05:55:57

+0

是的。我已經在我的電子郵件發送代碼中使用該功能。它不能幫助我實現持久的SMTP連接 – 2012-04-11 06:00:41

0

簡單這樣的:

忘了CI的電子郵件LIB除非你耐心地更改類...的核心作爲一個很好的選擇,使用的PHPMailer類,把它放在你的CI /應用/庫,並且只需要將屬性$ SMTPKeepAlive設置爲true,執行您想要執行的操作並在調用Smtp關();

我在這裏使用CI有一個很好的實現,我將SMTP服務器保存在數據庫中,並且所有的郵件都被我寫的模型「填滿」了。

Rgds