2016-05-18 3 views
1

Я начинаю внедрять функцию отправки по электронной почте массовых пользователей. Когда я нажимаю на сообщение, я получаю следующую ошибку.Не удается переопределить PHPMailerAutoload()?

Не можете переопределить PHPMailerAutoload() (ранее объявленный в C: \ XAMPP \ HTDOCS \ bloodbank2 \ PHPMailer \ PHPMailerAutoload.php: 24) в C: \ XAMPP \ HTDOCS \ bloodbank2 \ PHPMailer \ PHPMailerAutoload.php на линии 31

Однако первый пользователь в базе данных может получать электронную почту, а остальные нет.

Вот мои коды.
1st one is news.php, который позволяет человеку публиковать новости.

  <?php include 'core/init.php'; ?> 
      <?php include 'includes/overall/oheader.php'; 

      if (empty($_POST) === false){ 

      $require_fields = array('heading', 'information'); 

      foreach($_POST as $key=>$value){ 
      if(empty($value) && in_array($key, $require_fields) === true){ 
        $errors[] = 'Fields marked with an asterisk are required'; 
        break 1; 

      } 

      } 
      } 

      if(isset($_GET['success']) && empty($_GET['success'])){ 

      echo 'information posted'; 

      }else{ 


      if(empty($_POST) === false && empty($errors) === true){ 
      $insert_data = array(
       'heading'  => $_POST['heading'], 
       'information'  => $_POST['information'] 


      ); 

      // 
      //redirect 

        mail_users($_POST['heading'], $_POST['information']); 
        header('Location: news.php?success'); 
        news_data($insert_data); 
        //exit 
        exit(); 



     } 


     ?> 

     <h1>News</h1> 
     <p>Just a Template</p> 




      <form action="" method="post"> 
      <ul> 
       <li> 
        Heading*:<br> 
        <textarea rows="2" cols="40" name="heading"maxlength="50"></textarea> 

       </li> 

       <li> 


        information*:<br> 
        <textarea rows="10" cols="40" name="information"> </textarea> 

       </li> 

       <li> 


        <input type="submit" value="Post" name="save"> 

       </li> 

      <ul> 


     <?php 
     } 

     include 'includes/overall/ofooter.php'; ?> 

второй код функции функции mail_user();

  function mail_users($subject, $body){ 

      $query = mysql_query("SELECT `email`, `first_name` FROM `users`"); 

      while(($row = mysql_fetch_assoc($query)) !== false){ 

      $body = "Hello" . $row['first_name'] . ",\n\n" . $body; 
      email($row['email'], $subject, $body); 


      } 

     } 

3-я функция электронной почты, в которой содержится почтовая программа php.

   function email($to, $subject, $body){ 

       require '/phpmailer/PHPMailerAutoload.php'; 
       require '/phpmailer/class.phpmailer.php'; 

       error_reporting(-1); 
       $mail = new PHPMailer(true); 

       $mail->SMTPDebug = 0;        // Enable verbose debug output 

       $mail->isSMTP(true);          // Set mailer to use SMTP 
       $mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers 
       $mail->SMTPAuth = true;        //    Enable SMTP authentication 
       $mail->Username = '';     // SMTP username 
       $mail->Password = '';       // SMTP password 
       $mail->SMTPSecure = 'tls';       //   Enable TLS encryption, `ssl` also accepted 
       $mail->Port = 587;         // TCP port to connect to 

       $mail->setFrom(''); 
       $mail->addAddress(''.$to.'');  // Add a recipient 
       $mail->isHTML(true);         // Set Email format to HTML 

       $mail->Subject = ''.$subject.''; 
       $mail->Body = ''.$body.''; 
       $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; 

       if(!$mail->send()) { 
       echo 'Message could not be sent.'; 
        echo 'Mailer Error: ' . $mail->ErrorInfo; 
        } else { 
       echo 'Message has been sent'; 
       } 

       } 

Так как я могу избавиться от ошибки, так что все пользователи получают почту?

+0

Я предлагаю вам посмотрите [пример списка рассылки, предоставленный PHPMailer] (https://github.com/PHPMailer/PHPMailer/blob/master/examples/mailing_list.phps). Это очень похоже на то, что вы делаете, но гораздо более эффективно. – Synchro

ответ

10

Вы должны требовать только автозагрузчик, как он будет загружен класс почтовой PHP, а также:

require_once('/phpmailer/PHPMailerAutoload.php'); 
// remove this as it will be loaded by the autoloader 
// require '/phpmailer/class.phpmailer.php'; 

также переместить его в верхней части файла PHP .. не в функции

+1

Они также должны использовать 'require_once', если они хранят его внутри функции« email »(что было бы глупо, но ...), так как они называют это внутри цикла. –

+0

@Matei по-прежнему та же ошибка. – hardeep

+1

@Matei благодарит после использования require_once ошибка исчезла. – hardeep

Смежные вопросы