ob_end_clean phpmailer 错误
ob_end_clean error with phpmailer
我正在尝试使用 PHPmailer 发送邮件,但遇到错误并且不知道如何解决这个问题。
我希望有人能帮我解决这个问题。
(在测试阶段,这个设置运行起来很奇怪)
我得到了这个 class 我称之为。 :
class Mailer{
protected $mailer;
public function __construct($mailer) {
$this->mailer = $mailer;
}
public function send($template, $data, $callback){
require_once 'core/init.php';
$message = new Message($this->mailer);
extract($data);
ob_start();
require $template;
$template = ob_get_clean();
ob_end_clean();
$message->body($template);
call_user_func($callback, $message);//callback message
$this->mailer->send();
}
}
这里是我尝试邮寄的地方,如前所述,在测试中这有效ob_end_clean。
require 'classes/PHPMailer/PHPMailerAutoload.php';
$mailer = new PHPMailer;
require 'core/mailsettings.php';
$mail = new Mailer($mailer);
$mail->send('mailtemplate/new_bid.php',['name'=>Input::get('name'), 'activation_code' => $randomString1,'servername' => $_SERVER["SERVER_NAME"],'bid' => Input::get('bid'),'bidid' => $bidid, 'email' => Input::get('email')],function($m) {
$m->to(Input::get('email'));
$m->subject('Your input is in progress, please check your mail to activate.');
});Redirect::to('index.php');
但是当我尝试发送邮件时,我收到了来自 ob_end_clean 的错误消息。
Notice: ob_end_clean() [ref.outcontrol]: failed to delete buffer. No buffer to delete
即使我尝试
if (ob_get_length() > 0) { ob_end_clean(); }
按照此处的建议 (failed to delete buffer. No buffer to delete)。
我在 class 邮件程序中做错了什么吗?
或者有没有更好的方法构造public函数send?????
请指教,
先谢谢了。
您正在清理缓冲区两次:
$template = ob_get_clean();
ob_end_clean();
第二次调用会抛出错误,因为第一次调用已经删除了缓冲区。
我正在尝试使用 PHPmailer 发送邮件,但遇到错误并且不知道如何解决这个问题。 我希望有人能帮我解决这个问题。 (在测试阶段,这个设置运行起来很奇怪)
我得到了这个 class 我称之为。 :
class Mailer{
protected $mailer;
public function __construct($mailer) {
$this->mailer = $mailer;
}
public function send($template, $data, $callback){
require_once 'core/init.php';
$message = new Message($this->mailer);
extract($data);
ob_start();
require $template;
$template = ob_get_clean();
ob_end_clean();
$message->body($template);
call_user_func($callback, $message);//callback message
$this->mailer->send();
}
}
这里是我尝试邮寄的地方,如前所述,在测试中这有效ob_end_clean。
require 'classes/PHPMailer/PHPMailerAutoload.php';
$mailer = new PHPMailer;
require 'core/mailsettings.php';
$mail = new Mailer($mailer);
$mail->send('mailtemplate/new_bid.php',['name'=>Input::get('name'), 'activation_code' => $randomString1,'servername' => $_SERVER["SERVER_NAME"],'bid' => Input::get('bid'),'bidid' => $bidid, 'email' => Input::get('email')],function($m) {
$m->to(Input::get('email'));
$m->subject('Your input is in progress, please check your mail to activate.');
});Redirect::to('index.php');
但是当我尝试发送邮件时,我收到了来自 ob_end_clean 的错误消息。
Notice: ob_end_clean() [ref.outcontrol]: failed to delete buffer. No buffer to delete
即使我尝试
if (ob_get_length() > 0) { ob_end_clean(); }
按照此处的建议 (failed to delete buffer. No buffer to delete)。
我在 class 邮件程序中做错了什么吗? 或者有没有更好的方法构造public函数send?????
请指教, 先谢谢了。
您正在清理缓冲区两次:
$template = ob_get_clean();
ob_end_clean();
第二次调用会抛出错误,因为第一次调用已经删除了缓冲区。