PHPMailer 包括 php 页面作为正文


PHPMailer include php page as body?

我想使用 PhpMailer 将 php 页面数据作为正文发送到邮件中。

我的所有代码都正常工作。

我的主页代码:

<?php
require_once('libs/PHPMailer/PHPMailerAutoload.php');
require 'libs/PHPMailer/class.phpmailer.php';
$some_page_contents =  file_get_contents('welcome.php');  
$mail = new PHPMailer();
$mail->IsMail();
$mail->Host     = "smtp.example.com";
$mail->Username = "first@example.com";
$mail->Password = "example";
$mail->SetFrom("first@example.com","first User");
$mail->AddAddress("second@example.com");
$mail->isHtml(true);
$mail->Subject  = "Second PHPMailer Message";
$mail->Body     =  $some_page_contents; 
$mail->WordWrap = 50;
$mail->Send();
?>

我的欢迎.php代码

<?php 
echo 'hello';

在邮件中,我收到了<?php echo 'hello';为什么我也在邮件中得到 php 正文?

我已经遇到过很多次了。我有许多应用程序需要发送模板化电子邮件。我通过让我的模板加载一个变量来解决这个问题。例如,在我的主文件中,我将只有一个包含语句来包含模板文件。包含后,我将消息正文设置为指定的变量,让我们将其称为$body。但是在实际的模板文件中,我将像这样设置正文。

$body = <<<EOF
Hello $name!!
EOF;

这样,您可以在模板文件中运行PHP代码并返回变量。

我解决此问题的另一种方法是仅使我的模板为纯文本,但使用像 {name} 这样的占位符,并且只需使用 str_replace 函数将 {name} 的所有实例替换为实际的变量值。

这些都不是真正的答案,而更多的是替代方案。祝你好运。