PHPMailer异常错误
我编写了自己的Code Igniter模型来发送电子邮件.一切都很好,直到最近我才开始出现这个错误:
致命错误:无法在第2319行的/home/mysite/public_html/subdir/application/libraries/phpmailer/class.phpmailer.php中重新声明类phpmailerException 我正在使用: CodeIgniter 2 我尝试过以下方法来解决它: >添加了“$mail-> SMTPDebug = 0”以关闭错误. 这是我的控制器方法(公司/联系人),它调用我的模型(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”执行“查找全部” – 也许您在另一个区域中使用此名称作为另一个例外? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |