包含变量的标题,正文和页脚以及通过电子邮件发送? - PHP

时间:2011-11-23 21:44:31

标签: php html email

过去几个小时我一直难过......

我想发送一封包含HTML标题,PHP文件正文和HTML页脚的电子邮件。此电子邮件将从PHP脚本发送。这就是我所拥有的:

/************************ send_email.php *******************/

$first_name = John;  //I want to use this variable in body.php

$to = "fake_email@example.com";
$subject = "This is a test email";

//create the header for the email
$header = 'header_email.html';
$fd = fopen($header,"r");
$message_header = fread($fd, filesize($header));
fclose($fd);

//create the body for the email
$body = 'body.php';
$fd = fopen($body,"r");
$message_body = fread($fd, filesize($body));
fclose($fd);

$footer = 'footer_email.php';
$fd = fopen($footer,"r");
$message_footer = fread($fd, filesize($footer));
fclose($fd);

//the final message consists of the header+body+footer
$message = $message_header.$message_body.$message_footer;

mail($to, $subject, $message); //send the email

/************************ end send_email.php *******************/



/************************ header_email.html *******************/
<html>
<body>
/************************  end header_email.html **************/


/************************ body.php *******************/
//some HTML code
<?php echo $first_name; ?>
//some more HTML code
/************************  end body.php **************/


/************************ footer_email.html *******************/
</body>
</html>
/************************  end footer_email.html *************/

此代码的问题是电子邮件不会在正文中发送变量$ first_name。变量为null。好像PHP代码没有执行,它被视为HTML文件。

有没有人可以帮我解决在我包含的外部PHP文件正文中使用变量的问题并将其发送到电子邮件中?

感谢。

1 个答案:

答案 0 :(得分:1)

您正在阅读文件的内容,然后将其插入正文。这意味着其中的任何PHP代码都不会被执行。

您要做的是使用includeoutput buffering;类似的东西:

ob_start();   // start output buffering
$body_file = 'body.php';
include $body;

$body_output = ob_get_contents();  // put contents in a variable
ob_end_clean();

输出缓冲的作用是“捕获”输出,否则只会打印到浏览器。然后你可以把它们放在一个变量中,就像我做的那样($body_output = ob_get_contents();)或flush it(实际上把它发送到浏览器)。