2013-05-09 59 views
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> 

回答

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()等,但這些應該很容易解決。)

0

你需要設置mailtypeHTML