2013-07-30 62 views
3

今天我在CodeIgniter中嘗試了電子郵件類。根據文檔,我已將我的電子郵件$ config保存在config/email.php中。然後我就像平常一樣使用電子郵件課程。因此,它是這樣的:

配置/ email.php:在CodeIgniter中保存電子郵件配置並在需要時更改設置

<?php 
    $config = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.gmail.com', 
     'smtp_port' => 465, 
     'smtp_user' => '******', 
     'smtp_pass' => '******', 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1' 
    ); 
?> 


有些控制器:

public function sendMessage(){ 
    $this->load->library('email'); 
    $this->email->set_newline("\r\n"); 
    $this->email->from('[email protected]', 'My Name'); 
    $this->email->to("[email protected]"); 
    $this->email->subject('A test email from CodeIgniter using Gmail'); 
    $this->email->message("A test email from CodeIgniter using Gmail"); 
    $this->email->send(); 
} 

採用這種設置,一切工作正常,但現在如果我想改變一些設置,我會怎麼做?例如,我想發送電子郵件來自另一個帳戶和部分網站:我需要能夠更改smtp_usersmtp_pass字段。我將如何做到這一點?我想避免重寫一個全新的配置數組。

回答

1

在一個陣列中創建的配置和在控制器加載郵件庫時添加陣列:

 $email_config = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.gmail.com', 
     'smtp_port' => 465, 
     'smtp_user' => '******', 
     'smtp_pass' => '******', 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1' 
    ); 

    $this->load->library('email', $email_config); 

    $this->email->set_newline("\r\n"); 
    $this->email->from('[email protected]', 'My Name'); 
    $this->email->to("[email protected]"); 
    $this->email->subject('A test email from CodeIgniter using Gmail'); 
    $this->email->message("A test email from CodeIgniter using Gmail"); 
    $this->email->send(); 

如果要更改配置,只是做上述,並設置每個值參數傳遞給任何你希望他們通過POST或者傳遞給控制器​​的參數。

我不確定你是否在我發佈後第一次編輯你的問題,或者我錯過了它,但現在我看到'我想避免重寫一個全新的配置數組'。我不知道任何其他方式。

+0

嗨,我沒有編輯我的問題,是的這就是我prety多想什麼「我想以避免重寫一個全新的配置數組'現在' – Krimson

+0

只需傳遞你想覆蓋的值,而不是整個數組 –

1

覆蓋來自config/email.php的設置是可能的。您需要$this->load->library('email');才能從config/email.php中引入設置。然後,您可以爲要覆蓋的設置創建一個新的配置陣列,並撥打$this->email->initialize($config);來應用這些設置。

配置/ email.php:

<?php 
    $config = Array(
     'protocol' => 'smtp', 
     'smtp_host' => 'ssl://smtp.gmail.com', 
     'smtp_port' => 465, 
     'smtp_user' => '******', 
     'smtp_pass' => '******', 
     'mailtype' => 'html', 
     'charset' => 'iso-8859-1' 
    ); 
?> 

有些控制器:

public function sendMessage(){ 
    $this->load->library('email'); 

    $config = Array(
     'smtp_user' => '******', 
     'smtp_pass' => '******' 
    ); 

    $this->email->initialize($config); 
    $this->email->set_newline("\r\n"); 
    $this->email->from('[email protected]', 'My Name'); 
    $this->email->to("[email protected]"); 
    $this->email->subject('A test email from CodeIgniter using Gmail'); 
    $this->email->message("A test email from CodeIgniter using Gmail"); 
    $this->email->send(); 
} 
相關問題