2012-01-19 48 views
3

我很想知道如何完成這項任務。使用電子郵件

我在我的圖書館有一個函數,它會發出一封電子郵件。然而,它需要$類型的參數,類型可能會忘記密碼,成功註冊等。

我希望能夠設置該類型的部分,如它的主題以及要顯示的消息針對一個文件中的不同類型的電子郵件,使其更容易編輯。

我應該在codeigniter內部創建什麼樣的文件來完成此操作?

回答

4

傑夫,

看看坦克認證,他們已經處理這種電子郵件的事情(其小CI插件/庫進行身份驗證,電子郵件密碼恢復等)。

只需瀏覽代碼並取出所需的電子郵件模板,即可獲得純文本和HTML風格。

永遠學習的最好方法是查看其他代碼。

實施例從auth.php控制器(供參考):

/** 
* Send email message of given type (activate, forgot_password, etc.) 
* 
* @param string 
* @param string 
* @param array 
* @return void 
*/ 
function _send_email($type, $email, &$data) 
{ 
    $this->load->library('email'); 
    $this->email->from($this->config->item('webmaster_email', 'tank_auth'), $this->config->item('website_name', 'tank_auth')); 
    $this->email->reply_to($this->config->item('webmaster_email', 'tank_auth'), $this->config->item('website_name', 'tank_auth')); 
    $this->email->to($email); 
    $this->email->subject(sprintf($this->lang->line('auth_subject_'.$type), $this->config->item('website_name', 'tank_auth'))); 
    $this->email->message($this->load->view('email/'.$type.'-html', $data, TRUE)); 
    $this->email->set_alt_message($this->load->view('email/'.$type.'-txt', $data, TRUE)); 
    $this->email->send(); 
} 

Tank Auth是一個很好的庫,並且易於使用。

EDIT

一個視圖僅僅意味着產生輸出給用戶,閹它是 EMAIL或HTML瀏覽器返回的頁面沒有關係。「文本」你 講是一個文件引用$type.'-txt'在您查看文件夾`呼籲說 $type="hello"; ==>hello-txt頁/電子郵件

配置引用是因爲罐權威性都有自己的 在/apps/config/文件夾中的配置文件腳本引用它 喜歡的事情回覆,你也看到 $this->lang->line('auth_subject_'.$type)的 多語種的語言支持,可以不需要 爲你。

+0

爲什麼它們在視圖內而不是自己的配置文件中有文本? –

+0

更新了我的答案,並對代碼進行了澄清。 – Jakub

1

最簡單的方法是使用電子郵件的主題和正文爲郵件程序創建一個配置文件。

在您的郵件功能中加載此配置文件。

的有關配置文件CodeIgniter用戶指南有所有關於如何創建配置文件的詳細信息:http://codeigniter.com/user_guide/libraries/config.html

簡而言之,

  1. 創建應用程序/ config文件夾中的新文件。稱之爲mail_template
  2. 在該文件中添加你所需要的東西,一個配置陣列,例如

    $config['templates']['lost_password']['subject'] = 'Lost Password'; $config['templates']['lost_password']['body'] = 'The body'; [...]

  3. 在您的郵件功能,採用使用$ templates = $this->config->item('templates', 'mail_template');
  4. $this->config->load('mail_template', true);
  5. 訪問您的變量加載該文件
+0

你能提供一個鏈接,我更不僅僅是鏈接到codeigniter網站上的配置文件,它可以完成這個任務,我可以用它作爲模板來看待它嗎? –

+0

@JeffDavidson編輯我的答案並提供更多詳細信息 – applechief

+0

在視圖中使用配置文件有什麼好處這個? –

1

爲什麼不爲每種類型創建一系列視圖(比如在名爲'email_templates'的文件夾中),其中的變量適用。 然後,您可以使用瀏覽功能來獲取HTML,它傳遞到您的電子郵件功能(請注意,返回HTML而不是渲染它的第三個參數。

$html = $this->load->view('email_templates/forgot_password', $data, TRUE); 
+0

爲什麼這些存儲在一個視圖而不是一個配置文件? –

+0

@JeffDavidson因爲它們是模板,即視圖。 Config應該被用作_configurate_的一種方式。這是一個邏輯問題(至少對我來說......),如果你更喜歡使用配置來存儲視圖,你可以自由地做到這一點 –

相關問題