过去几个小时我一直难过......
我想发送一封包含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文件正文中使用变量的问题并将其发送到电子邮件中?
感谢。
答案 0 :(得分:1)
您正在阅读文件的内容,然后将其插入正文。这意味着其中的任何PHP代码都不会被执行。
您要做的是使用include
和output 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(实际上把它发送到浏览器)。