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);
        }