2012-04-20 124 views
0

嘿你们我有这段代码在这里,我想要做的是包括什么是在这个HTML文件到电子邮件,但它似乎没有工作:(是MIME类型好吗?是php包括不是我期待的?包括一个电子邮件中的PHP文件

 $to = "[email protected]"; 
     $subject = "Late Notice"; 
     $message .= include("latenotice.html"); 
     $from = "[email protected]"; 
     $headers = "From:" . $from; 
     $headers .= "MIME-Version: 1.0\r\n"; 
     $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
     mail($to,$subject,$message,$headers); 
+0

Include打开并评估一个文件。你可能想要类似fopen()的东西。 – j08691 2012-04-20 18:32:12

+1

@ j08691:file_get_contents要容易得多。 – 2012-04-20 18:33:19

回答

3

include不返回字符串。它执行文件,这意味着HTML将被回显到屏幕上。

尝试用file_get_contents代替。

$message .= file_get_contents("latenotice.html"); 

注意:这会不会文件中执行任意PHP代码。如果你想要的话,你可以使用输出缓冲。

ob_start(); 
include("latenotice.html"); 
$message .= ob_get_clean(); 
+0

感谢火箭,作品像一个魅力;)我将能够在5分钟内接受 – user979331 2012-04-20 18:39:32

+0

不客气:-) – 2012-04-20 18:39:41

1

如果你想后,以“回报”的东西的包括,你需要把你包括文件的最后一回。

像file.php

return "My String"; 

Email.php

$var = include('file.php'); // "My String" 

在你的情况使用file_get_contents

+0

一个回报什么都不做,除非有回报。 'return;'本身不包含文件的来源。 – 2012-04-20 18:33:54

+0

是的,我编辑了我的答案,因为它不是很清楚。 – mamadrood 2012-04-20 18:35:15

1

include只有当包含的文件return有些东西 - latenotice.html可能只包含内容时,才会计算出一个值。我想你想读取文件:

$message .= file_get_contents("latenotice.html"); 
1

Include不返回一个字符串,它包含在脚本中的可执行代码。

您可能正在寻找file_get_contents

$message .= file_get_contents('latenotice.html'); 

此外,你应该看一下PEAR的lib像Mail_Mime;附件和MIME类型并不是微不足道的。