我正在尝试使用Codeigniter的电子邮件类发送HTML电子邮件。我就是这样做的:
$config = Array(
'protocol' => 'smtp',
'smtp_host' => 'ssl://smtp.googlemail.com',
'smtp_port' => 465,
'smtp_user' => 'a@a.com',
'smtp_pass' => 'password',
'mailtype' => 'html',
'charset' => 'iso-8859-1'
);
$this->load->library('email', $config);
$this->email->from('b@b.com', 'Me');
$this->email->to($email);
$this->email->subject($subject);
$this->email->message($html);
$this->email->set_newline("'r'n");
if($this->email->send()){
return true;
}else{
return false;
}
然而,当我在Gmail或outlook中查看电子邮件时,我会看到一堆HTML以文本形式出现在电子邮件的顶部,而电子邮件的其余部分则正常显示。
这里是我正在发送的HTML,它是我找到的一个模板,可以用来测试。第1行至第19行显示为普通文本,不进行渲染。
这就是电子邮件的外观。
为什么会出现这种情况?
作为问题评论中我们对话的总结,问题似乎是$html
变量的内容。变量包含实体编码的HTML。通过html_entity_decode
运行它解决了问题。
未呈现的HTML代码似乎是模板的头。也许Gmail将只显示标签body
中的代码,因为Gmail是一个网络应用程序,所以它显示在已经包含标题和正文(<html><head><body>
)的网页中。