电子邮件库未发送正确的链接

时间:2013-05-09 11:13:51

标签: codeigniter codeigniter-2

我有以下代码:

$link = "www.domain.com/profile/forgot_password?user=".$username . "&key=".$key;
$this->email->message('You requested to reset your password. Follow the link. <a href="'.$link.'"> ' . $link . "</a>.    Thank you,System Support.");   

我想在这里尝试的是在用户希望重置密码时为用户创建友好的消息。应该是:

  

您要求重置密码。点击这里进行操作!

点击这里的单词,它应该在href中有链接转到重置页面。这不起作用,因为上面的代码似乎是转义html因此它在发送的消息中显示以下内容。它应该解释HTML标签不发送它们。

<a href='hdkjahskjdaskhdsjkahd'> djadjalksjdklasjdkajsd</a>

2 个答案:

答案 0 :(得分:1)

确保您已设置相应的电子邮件首选项以发送HTML格式的电子邮件,尤其是mailtype偏好设置:

//You can add more email preferences here too
$config['mailtype'] = html;
$this->email->initialize($config);

$link = "www.domain.com/profile/forgot_password?user=".$username . "&key=".$key;
$this->email->message('You requested to reset your password. Follow the link. <a href="'.$link.'"> ' . $link . "</a>.    Thank you,System Support.");

如果您愿意,可以将电子邮件首选项存储在配置文件中:

  

只需创建一个名为email.php的新文件,添加$config数组即可   在那个文件中。然后将文件保存在config/email.php,它将是   自动使用。


CodeIgniter的用户指南specifies that

  

如果您发送HTML电子邮件,则必须将其作为完整的网页发送。

因此,这意味着包含您用于创建网页的所有相关标记(<html><body>等)。为了便于管理,您可以将电子邮件模板存储在视图文件中,例如:

application/views/email_templates/password_reset.php

此文件可以包含要作为电子邮件发送的相关HTML,例如:

//Other appropriate HTML tags...    
<p>You requested to reset your password. Follow the link. <a href="<?php echo $link; ?>"><?php echo $link; ?></a>. Thank you, System Support.</p>
//Other appropriate HTML tags...

然后,您可以将链接传递给视图,并将该视图作为电子邮件发送:

$data['link'] = "www.domain.com/profile/forgot_password?user=".$username . "&key=".$key;
$email_message = $this->load->view('email_templates/password_reset', $data, true);
$this->email->message($email_message);

(我没有包含所有必需的电子邮件功能,例如to()send()等,但这些功能应该很容易解决。)

答案 1 :(得分:0)

您需要将 mailtype 设置为 html