2012-01-19 50 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_的一种方式。这是一个逻辑问题(至少对我来说......),如果你更喜欢使用配置来存储视图,你可以自由地做到这一点 –

相关问题