我的页面具有以下结构:
<?php
session_start();
ob_start();
?>
HTML HEADER
links to stylesheets global.css and mail.css
<?php
function email(){
/* using the stylesheets global.css and mail.css */
$text = '<div class="test">
<p id="par">...
<span id="write" class="text">...</span>
</p>
</div>';
return $text;
}
?>
/* some text and html stuff */
<?php
if(isset(...)){
/* php form validation */
/* after validating I send an email to the user where I call
the function email() which use the stylesheets. */
$mail_text = 'Dear .....';
$mail_text .= email();
$mail_headers = "From: test@test.com\r\n".
'X-Mailer: PHP/' . phpversion().
'MIME-Version: 1.0' . "\r\n".
'Content-type: text/html; charset=utf-8' . "\r\n";
if(mail(..., ..., $mail_text, $mail_headers)){
header('location: newlocation.php');
}
?>
/* HTML FORMS and text and .... */
<?php
ob_end_flush();
?>
电子邮件与来自email()函数的文本一起发送,但没有格式化导致CSS仅在页面底部的ob_end_flush()之后“打印出来”。
我怎么能解决这个问题? email()中有很多类和样式,所以每次<div style="...">
等都写不是一个好的解决方案。
答案 0 :(得分:0)
您对输出缓冲感到困惑。您在页面开头打印的html / css不会在任何地方被捕获,也不会成为$mail_text
的一部分。仅仅因为你是usign输出缓冲不会使该缓冲区神奇地出现在变量中。您至少需要$mail_text .= ob_get_clean()
或其他东西来提取缓冲区的内容并将其放入变量中。