使用电子邮件

时间:2012-01-19 14:35:12

标签: php codeigniter

我很想知道如何完成这项任务。

我的库中有一个函数会发送一封电子邮件。但是它需要$ type参数,类型可能会忘记密码,成功注册等。

我希望能够在一个文件中设置该类型的部分(例如主题)以及要为不同类型的电子邮件显示的消息,以便更容易编辑该行。

我应该在codeigniter内创建什么样的文件才能完成此任务?

3 个答案:

答案 0 :(得分:4)

杰夫,

看看 Tank Auth ,他们已经处理了这种类型的电子邮件(它是一个用于身份验证,电子邮件密码恢复等的小型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是一个很好的图书馆,易于使用。

编辑

  

视图只是意味着为用户生成输出,而不是用户   EMAIL或HTML浏览器返回的页面无关紧要。 “文字”你   说的是文件引用$type.'-txt'正在调用say   $type="hello"; ==>视图文件夹中的hello-txt页面`/ email

     

config 引用也是因为 tank auth 有自己的   脚本引用它的/apps/config/文件夹中的配置文件   对于来自回复之类的内容,您也会看到   多语言语言支持   可能不需要$this->lang->line('auth_subject_'.$type)   对你而言。

答案 1 :(得分:1)

最简单的方法是使用电子邮件的主题和正文为邮件程序创建配置文件。

在邮寄功能中加载此配置文件。

有关配置文件的codeigniter用户指南包含有关如何创建配置文件的所有详细信息:http://codeigniter.com/user_guide/libraries/config.html

简而言之,

  1. 在application / config文件夹中创建一个新文件。叫它mail_template
  2. 在该文件中添加一个包含所需内容的配置数组,例如

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

  3. 在您的邮件功能中,使用$this->config->load('mail_template', true);
  4. 加载该文件
  5. 使用$ templates = $this->config->item('templates', 'mail_template');
  6. 访问您的变量

答案 2 :(得分:1)

为什么不为每种类型创建一系列视图(例如在名为“email_templates”的文件夹中),其中变量适合。 然后,您可以使用视图函数获取html,将其传递到您的电子邮件功能中(注意返回html而不是呈现它的第三个参数。

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