在codeigniter电子邮件中格式化HTML

时间:2015-10-19 18:07:10

标签: php html codeigniter email

我必须向用户发送电子邮件,但电子邮件必须是HTML格式的。我在这里读过其他帖子,但没有帮助。

这是我来自控制器的代码:

public function reply_post(){

    $to = $this->input->post('contact_email');
    $subject = $this->input->post('contact_subject');
    $header_message = "<html><head><title>".$subject."</title></head><body>";
    $footer_message = "</body></html>";
    $input_msg = $this->input->post('contact_reply');
    $msg = $header_message.$input_msg.$footer_message;
    $from = "admin@XXXXXXX.com";

    $config = Array(
      'protocol' => 'smtp',
      'smtp_host' => 'mail.XXXXXX.com',
      'smtp_port' => XXX,
      'smtp_user' => 'admin@XXXXX.com', // change it to yours
      'smtp_pass' => 'XXXXX', // change it to yours
      'mailtype' => 'html',
      'charset' => 'iso-8859-1',
      'wordwrap' => TRUE
    );

    $this->load->library('email', $config);
    $this->email->set_newline("\r\n");
    $this->email->from($from, "Admin"); // change it to yours
    $this->email->to($to);// change it to yours
    $this->email->subject($subject);
    $this->email->message($msg);

    if($this->email->send()){
      $msg = 'Email sent.';
    } else {
        log_message('error','Email did not send');
        $msg = "Email Did not send";
    }
    $this->finish($msg);
}

我从表单中获得的消息是通过Summernote WYSIWYG编辑器,因此它已经是HTML格式的。但是,当我收到电子邮件时,它不会对其应用HTML标记,并且所有标记都可见。它就像某种程度上将mailtype设置为'text',即使在配置中将其设置为HTML之后也是如此。

1 个答案:

答案 0 :(得分:1)

除非您初始化配置选项,否则设置配置选项不起作用。在$ config数组后添加:

$this->email->initialize($config);

所以你没有把它搞定所以它没有进一步添加

 adding $this->email->set_mailtype("html");

可能会解决您的问题。

加载库然后初始化