我的页面具有以下结构:
<?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.comrn".
'X-Mailer: PHP/' . phpversion().
'MIME-Version: 1.0' . "rn".
'Content-type: text/html; charset=utf-8' . "rn";
if(mail(..., ..., $mail_text, $mail_headers)){
header('location: newlocation.php');
}
?>
/* HTML FORMS and text and .... */
<?php
ob_end_flush();
?>
电子邮件发送带有来自电子邮件()函数的文本,但没有格式,导致CSS仅在页面底部的ob_end_flush()之后"打印出"。
我该如何解决?电子邮件()中有很多类和样式,因此每次编写<div style="...">
等是一个好的解决方案。
您对输出缓冲感到困惑。您在页面开头打印的HTML/CSS不会在任何地方捕获,也不会属于$mail_text
。仅仅因为您使用USIGN输出缓冲并不会使该缓冲区神奇地出现在变量中。您至少需要$mail_text .= ob_get_clean()
或其他东西来提取缓冲区的内容并将其放入变量中。