0

我有以下代码:

$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>
4

2 回答 2

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 的用户指南还指定

如果您发送 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()但这些应该很容易解决。)

于 2013-05-09T13:27:55.970 回答
0

您需要将 邮件类型设置为html

于 2013-05-09T12:07:11.053 回答