PHP缓冲输出、CSS和邮件

3

目前我有一个发送邮件的脚本,脚本的结果是一些HTML表格:

$from = "prueba.com <noreply@prueba.com>"; 
$to = "myemail@gmail.com"; 
echo "<div>"; 

$contenido = ob_get_contents(); 
echo "</div>"; 
$cabeceras = "Content-type: text/html; charset=iso-8859-1 \r\n" 
           ."MIME-Version: 1.0 \r\n" 
           ."To: $cliente <$email> \r\n" 
           ."From: prueba <prueba@example.com> \r\n"; 

mail($to,$subject,$contenido,$cabeceras); 

ob_end_flush(); 

可能是给那封邮件添加CSS的问题吗?我已经尝试过几种方法,但都没有成功。
提前感谢您的合作。
编辑:
这是我的代码:http://www.mediafire.com/?bq9352xh6paji1d

1
你的$contenido里面有什么?你需要指定CSS内联。 - jtheman
$contenido 是将 file_get_contents 转换成数组(使用 glob 函数处理多个文件)并使用 strip_tags 处理后的结果。其结果是一些 HTML 表格(每个文件对应一个 HTML 表格)。 - JuanFernandoz
是的,但如果您想为HTML添加样式,则可以添加一个具有CSS的HEAD部分,或者将样式作为style =“”内联添加... - jtheman
已经尝试过了,但由于某种原因,邮件结果不接受任何 CSS 规则。 - JuanFernandoz
你在问题中遗漏了重要的部分,你需要提供输出缓冲区中的内容...我猜你会受益于使用模板来放置内容... - jtheman
我认为你不理解网页HTML和电子邮件HTML之间的区别。 - user557846
2个回答

3
也许你想要这样做:(使用ob_get_clean()
ob_start();
echo "<div>"; 
    // more html
echo "</div>";
$contenido = ob_get_clean(); 

并删除最后一个ob_end_flush();

测试:

$from = "prueba.com <noreply@prueba.com>"; 
$to = "myemail@gmail.com"; 
ob_start();
echo "<div>"; 
echo "<table border='1'><tr><td>TEST</td></tr></tr>";
echo "</div>";
$contenido = ob_get_clean(); 

$cabeceras = "Content-type: text/html; charset=iso-8859-1 \r\n" 
           ."MIME-Version: 1.0 \r\n" 
           ."To: $cliente <$email> \r\n" 
           ."From: prueba <prueba@example.com> \r\n"; 

mail($to,$subject,$contenido,$cabeceras); 

这个脚本只发送了TEST表,但是脚本结果没有存储在缓冲区中。 - JuanFernandoz
不是因为邮件内容是缓冲区的结果,而是所有脚本操作的结果。 - JuanFernandoz
然后你可以在这些 ob_* 之间添加 echo file_get_contents('myfilename.html'); - Mihai Iorga
不,你的电子邮件已经发送了,但如果你使用GMAIL,它会阻止你的HTML,因为你有一些JavaScript代码,并且你的HTML标题很奇怪...去掉那些丑陋的字符,它就会被发送。 - Mihai Iorga
我收到了邮件,但没有CSS,是Gmail阻止了CSS吗? - JuanFernandoz
显示剩余4条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接