PHPMailer异常错误

前端之家收集整理的这篇文章主要介绍了PHPMailer异常错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我编写了自己的Code Igniter模型来发送电子邮件.一切都很好,直到最近我才开始出现这个错误

致命错误:无法在第2319行的/home/mysite/public_html/subdir/application/libraries/PHPmailer/class.PHPmailer.PHP中重新声明类PHPmailerException

我正在使用:

CodeIgniter 2
PHPMailer 5.1

我尝试过以下方法解决它:

>添加了“$mail-> SMTPDebug = 0”以关闭错误.
>新增:“$mail-> MailerDebug = false;”
>修改PHPMailer仅在打开SMTPDebug时显示错误.
>查找并删除任何echo语句
>添加了try / catch块尝试添加/删除:$mail = new PHPMailer(true);

这是我的控制器方法(公司/联系人),它调用我的模型(message_model):

function contact()
    {
        //Do settings.
        $this->options->task='email';
        $this->options->change = 'sent';
        $this->options->form_validation='';
        $this->options->page_title='Contact Us';

        //Import library
        include_once('application/libraries/recaptcha/recaptchalib.PHP');//Include recaptcha library.

        //Keys for recaptcha,stored in mainconfig file.
        $this->options->publickey = $this->config->item('recaptcha_public');
        $this->options->privatekey = $this->config->item('recaptcha_private');      

        //Form validation
        $this->form_validation->set_error_delimiters('<div class="error">','</div>');
        $this->form_validation->set_rules('name_field','Name of problem','trim|required|min_length[3]|max_length[100]');
        $this->form_validation->set_rules('desc_field','Description','trim|required|min_length[10]|max_length[2000]');
        $this->form_validation->set_rules('email_field','Your email address','trim|required|valid_email');
$this->form_validation->set_rules('recaptcha_response_field','captcha field','trim|required|callback__check_recaptcha');

//If valid.
        if( $this->form_validation->run() )
        {
  //Set email contents.
            $message="This is a message from the contact form on ".$this->config->item('site_name')."<br /><br />";
            $message.=convert_nl($this->input->post('desc_field'));
            $message.="<br /><br />Reply to this person by clicking this link: <a href=\"mailto:".$this->input->post('email_field')."\">".$this->input->post('name_field')."</a><br /><br />";

  $options = array('host'=>$this->config->item('email_host'),//mail.fixilink.com
            'username'=>$this->config->item('email_username'),'password'=>$this->config->item('email_password'),'from_name'=>$this->input->post('name_field'),'to'=>array($this->config->item('email_to')=>$this->config->item('email_to') ),'cc'=>$this->config->item('email_cc'),'full_name'=>$this->input->post('name_field'),'subject'=>'Email from '.$this->config->item('site_name').' visitor: '.$this->input->post('name_field'),'message'=>$message,'word_wrap'=>50,'format'=>$this->config->item('email_format'),'PHPmailer_folder'=>$this->config->item('PHPmailer_folder')
            );

  //Send email using own email class and PHPmailer.
            $result = $this->message_model->send_email($options);

            //Second email to sender
  //Set email contents.
            $message="Thank you for your enquiry,we aim to get a reply to you within 2 working days.  In the meantime,please do follow us on www.facebook.com/autismworksuk";

            $options = array('host'=>$this->config->item('email_host'),'to'=>$this->input->post('email_field'),'subject'=>'Email from '.$this->config->item('site_name'),'PHPmailer_folder'=>$this->config->item('PHPmailer_folder')
            );

  //Send email using own email class and PHPmailer.
            $result = $this->message_model->send_email($options);           

            //Set result.    
            if($result==-1)
                $this->session->set_flashdata('result',ucfirst($this->options->task).' was not '.$this->options->change.' because of a database error.');
            elseif($result==0)
                $this->session->set_flashdata('result','No changes were made.');
            else
                $this->session->set_flashdata('result',ucfirst($this->options->task).' was '.$this->options->change.' successfully.');

            //Redirect to completed controller.
            redirect('completed');
        }

//Validation Failed or first time through loop.
        $this->load->view('company/contact_view.PHP',$this->options);
    }

这是我的模型发送电子邮件方法.它曾经工作但没有任何改变我现在可以想到我得到一个异常错误

function send_email($options=array())
    {
        if(!$this->_required(array('host','username','password','from_name','to','full_name','subject','message'),$options))//check the required options of email and pass aggainst provided $options.
          return false;

        $options = $this->_default(array('word_wrap'=>50,'format'=>'html','charset'=>'utf-8'),$options);

try
{        
  if(isset($options['PHPmailer_folder']))
    require($options['PHPmailer_folder']."/class.PHPmailer.PHP");
  else
    require("application/libraries/PHPmailer/class.PHPmailer.PHP");//Typical CI 2.1 folder.

  $mail = new PHPMailer();
  $mail->MailerDebug = false;

  //Set main fields.
  $mail->SetLanguage("en",'PHPmailer/language/');
  $mail->IsSMTP();// set mailer to use SMTP
  $mail->SMTPDebug  = 0;  

  $mail->Host =     $options['host'];
  $mail->SMTPAuth = TRUE;     // turn on SMTP authentication
  $mail->Username = $options['username'];
  $mail->Password = $options['password'];
  $mail->FromName = $options['from_name'];//WHo is the email from.
  $mail->WordWrap = $options['word_wrap'];// Set word wrap to 50 characters default.
  $mail->Subject =  $options['subject'];
  $mail->Body    =  $options['message'];        
  $mail->CharSet =  $options['charset'];

  //From is the username on the server,not sender email.
  if(isset($options['from']))
    $mail->From = $options['from'];
  else
    $mail->From = $mail->Username;  //Default From email same as smtp user

  //Add reply to.
  if(isset($options['reply_to']))
    $mail->AddReplyTo($options['reply_to'],$options['from']);

  if(isset($options['sender']))
    $mail->Sender = $options['sender'];

  //Add recipients / to field (required)
  if(is_array($options['to']))
  {
    foreach($options['to'] as $to =>$fn)
      $mail->AddAddress($to,$fn);
  }
  else
  {
    $mail->AddAddress($options['to']); //Email address where you wish to receive/collect those emails.
  }

  //Add cc to list if exists. Must be an array
  if(isset($options['cc']))
  {
    if(is_array($options['cc']))
    {
      foreach($options['cc'] as $to =>$fn)
        $mail->AddCC($to,$fn);
    }
    else
    {
      log_message('debug','---->CC field must be an array for use with Message_Model.');
    }
  }

  //Add bcc to list if exists. Must be an array
  if(isset($options['bcc']))
  {
    if(is_array($options['bcc']))
    {
      foreach($options['bcc'] as $to =>$fn)
        $mail->AddBCC($to,'---->BCC field must be an array for use with Message_Model.');
    }
  }

  //Alternative text-only body.
  if(isset($options['alt_body']))
    $mail->AltBody=$options['alt_body'];
  else
    $mail->AltBody = htmlspecialchars_decode( strip_tags( $options['message'] ),ENT_QUOTES );//Strip out all html and other chars and convert to plain text.

  //Plain/html format.
  if(isset($options['format']))
  {
    if($options['format']=='html')
      $mail->IsHTML(true);                                  // set email format to HTML
  }     

  //Send email and set result.
  $return['message']='';

  if(!$mail->Send())
  {
   $return['message'].= "Message could not be sent.<br />\n";
   $return['message'].= "Mailer Error: " . $mail->ErrorInfo."\n";
   $return['result'] = 0;
  }
  else
  {
    $return['message'].= "Message has been sent successfully.\n";
    $return['result'] = 1;
  }
}
catch (PHPmailerException $e)
{
  log_message('error','---->PHPMailer error: '.$e->errorMessage() );
}
catch (Exception $e) 
{
  log_message('error','---->PHPMailer error: '.$e->errorMessage() );
}
        return $return;
    }
基本上发生了两件事之一:

>您在某处“包含”了两次PHP代码,导致第二次生成重新声明错误>除了你的模型之外,你在其他地方使用“PHPmailerException”.您是否尝试在IDE中为所有调用PHPmailerException”执行“查找全部” – 也许您在另一个区域中使用此名称作为另一个例外?

猜你在找的PHP相关文章