Php 使用ob_start()从外部文件获取邮件模板
我有两个文件:Php 使用ob_start()从外部文件获取邮件模板,php,email,phpmailer,Php,Email,Phpmailer,我有两个文件: function emailTemplate() { if($this->template) { extract($this->email_data); ob_start(); include_once("email_templates/".$this->template.".phtml"); return ob_get_clean();
function emailTemplate() {
if($this->template) {
extract($this->email_data);
ob_start();
include_once("email_templates/".$this->template.".phtml");
return ob_get_clean();
}
}
和电子邮件模板.phtml
<div>Hello, Your order has been accepted. <?= $some_data ?></div>
我通过PHPmailer发送这封邮件,但它一直告诉我邮件正文是空的,但我收到的邮件格式和数据都正确。只是这个错误信息一直出现。如果我将include_更改为just include,它会向我发送两封电子邮件,而不是一封
我看不出问题出在哪里
谢谢你的帮助
编辑:电子邮件附带正常数据格式正确,第二封为空…Include\u once在这里是错误的,因为您总是希望导入它。至于为什么它会发送2,你需要发布其余的代码。谢谢,我添加了PHPmailer代码听起来你可能会在两个不同的地方循环某个东西或包含,而你还没有发布该部分代码。如果你使用include_一次并调用函数两次,就会这样做,所以请检查你从哪里调用它,并添加调试或日志输出,以便您可以看到它在做什么。另外,您的代码基于一个过时的示例,因此请确保您使用的是最新的PHPMailer。是的,我记得这是一封邮件,但它很奇怪,一封邮件“充满了数据”,而另一封则没有。此外,我只在一个地方有这个函数,而Netbeans在代码中没有找到它的另一个方面。。。
$mail = new PHPMailer();
$mail->SetLanguage("cz");
$mail->IsSMTP();
$mail->Host = "smtp.some.cz";
$mail->SMTPAuth = true;
$mail->Username = "info@some.cz";
$mail->Password = "xysdff";
$mail->From = "info@some.cz";
$mail->FromName = "Some.cz";
$mail->AddAddress($this->xy);
$mail->AddBCC($this->xy2, 'potvrzení');
$mail->IsHTML(true);
$mail->Subject = $subject;
$mail->Body = $template;
$mail->AltBody = $template;
$mail->WordWrap = 50;
$mail->CharSet = "utf-8";
}
if(!$mail->Send()) {
throw new Exception($mail->ErrorInfo);
}