2012-04-17 75 views
0

这很简单,我试图加载一个视图文件作为我的电子邮件使用CodeIgniter。关键是要有一个HTML,而不仅仅是一个基于文本的消息。codeigniter中的HTML电子邮件/ php

目前,我的电子邮件被发送正常,但如果我的代码看起来像下面做什么的消息都为空:

这里是PHP的相关部分:

$config=array(
    'protocol' => 'smtp', 
    'smtp_host' => 'xxx', 
    'smtp_user' => 'xxx', 
    'smtp_pass' => 'xxx', 
    'smtp_port' => 587, 
    'mailtype' => 'html', 
    'crlf' => "\r\n", 
    'newline' => "\r\n" 
); 
$this->email->initialize($config); 
$this->email->subject('testing loading a view file'); 
$msg = $this->load->view('reviews/email', '', false); 
$this->email->message($msg); 

下面是评论/ email.php文件看起来像:

<html> 
<head></head> 
    <body> <h1>this should be BIG</h1> this should not 
      <a href="http://google.com/<? $php='login'; echo $php?>">Google</a> 
    </body> 
</html> 

感谢你可能有任何建议,

Tim

回答

3

您正在错误地加载视图。第三个参数应该是TRUE,这样CodeIgniter将以字符串的形式返回视图。

$msg = $this->load->view('reviews/email', '', true); 

http://codeigniter.com/user_guide/general/views.html

还有第三个可选参数,可以让你改变的 行为的功能,使得它返回的数据作为一个字符串,而不是发送 到您的浏览器。如果您想以某种方式处理数据 ,这会很有用。如果将该参数设置为true(布尔值),它将返回 数据。默认行为是false,将其发送到您的浏览器。 记住它分配给一个变量,如果你想返回的数据:

$string = $this->load->view('myfile', '', true); 
+0

末尔喜,感谢您的建议,即工作。虽然我的目的的关键部分,但添加到代码链接没有。你能想到为什么这不起作用:'google login' – 2012-04-17 15:00:24

+0

@timpeterson它究竟是如何不工作?字符串'login'没有输出?另外,如果你只是回应字符串,会不会更容易?我没有看到为什么你应该先将它存储在一个变量中。实际上,不需要使用PHP打印字符串。纯粹的HTML会工作得很好(假设它总是相同的)。 – 2012-04-17 15:04:03

+0

抱歉,它确实起作用,因为单击该链接会将您带到相应的URL。我很困惑,因为如果你将鼠标悬停在链接上,它会显示一个指向我的电子邮件服务器的URL,然后是很多像这样的随机字符:'http:// email.mysite.com/adfas73j3j3jd-adsfdfk'。但是,是的,如果你点击它,它会把你带到'mysite.com/login'。这很奇怪,你明白为什么会这样吗? – 2012-04-17 15:06:55