我正在尝试发送邮件,但是发送错误并且不知道如何解决此问题。 我希望有人可以帮助我。 (在测试阶段,这种设置工作很奇怪)
我得到了这个课程。 :
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的错误。
注意:ob_end_clean()[ref.outcontrol]:无法删除缓冲区。没有要删除的缓冲区
即使我尝试
if (ob_get_length() > 0) { ob_end_clean(); }
按照此处的建议(failed to delete buffer. No buffer to delete)。
在Mailer班上有什么我做错了吗? 或者是否有更好的方法来构建公共函数send ????
请告知, 先谢谢。答案 0 :(得分:2)
您正在清理缓冲区两次:
$template = ob_get_clean();
ob_end_clean();
第二次调用会抛出错误,因为第一次调用已经删除了缓冲区。