2014-05-04 30 views
0

我有了一臺名爲mailing_list其中有三列名字,姓氏和電子郵件數據庫發送電子郵件。此表有兩個人 第一個名字是:X1姓是:y1和電子郵件是:[email protected] 第二個名字是:X2姓:Y2和電子郵件是:X2 @雅虎。 com 我正在嘗試使用PHP Mailer,代碼如下,發生了什麼事情是x1獲得了與「Dear x1 y1」相同的電子郵件兩次,第二次與「Dear x2 y2」獲得了相同的電子郵件。第二個名字是x2獲得一次,這很好。我不希望同一封電子郵件不止一次去這個人,我知道循環有問題。請幫忙嗎? 的sendemail.php頁錯誤使用PHP MAILER

<?php 
    require("config.php"); 

    if(isset($_POST['submit'])) 
    { 

     require("class.phpmailer.php"); 
     $mail = new PHPMailer();   

     $query = "SELECT * FROM mailing_list"; 
     $result = mysqli_query($connect, $query)  
     or die('Error querying the database!'); 


      $mail->IsSMTP(); 
      $mail->Host="smtp.gmail.com";  
      $mail->Username="myEmailAdd"; 
      $mail->Password="myPassWord"; //SMTP_PASS; 
      $mail->SMTPAuth=true; 
      $mail->SMTPSecure = 'tls'; 
      $mail->From ="myEmailAdd"; 
      $mail->FromName ="CSCA";  

     while($row = mysqli_fetch_array($result)) 
     { 

      $first_name = $row['first_name']; 
      $last_name = $row['last_name']; 
      $to = $row['email']; 

      $mail->AddAddress($to); 


      $mail->Subject= $_POST['subject']; 

      $mail->Body = "Dear $first_name $last_name,\n" . $_POST['body']; 
      $mail->WordWrap = 50; 

      if(!$mail->Send()) 
      { 
       echo 'Message was not sent.'; 
       echo 'Mailer error: ' . $mail->ErrorInfo; 
      } 
      else 
      { 
       echo 'Message has been sent.'; 
       echo 'Email sent to ' . $to . '<br/>'; 
      }   

     } 

     mysqli_close($connect); 
    } 
    ?> 

這裏是電子郵件的形式

<body> 
    <form method="post" action="sendemail.php"> 
      <label for="subject">Subject of email:</label><br/> 
      <input type="text" id="subject" name="subject" size="60"/><br/> 
      <label for="body">Body of mail:</label><br/> 
      <textarea id="body" name="body" rows="8" cols="60"></textarea><br/> 
      <input type="submit" name="submit" value="Submit"/>    
    </form> 
</body> 
+2

當然出現這種情況,是因爲你在你的循環使用'AddAddress'方法。使用方法來代替,只是設置了一個奇異的'要:'地址,而不是添加多個收件人。 – CBroe

+0

我看不出一個明確的方法來添加一個'要:'地址(那會還明確以前的,而這樣做),在短短的一瞥中的文檔 - 但有一個'clearAddresses'方法,所以調用之前你的循環中有'AddAddress',那麼它應該可以正常工作。 – CBroe

+0

如果你願意閱讀類方法的手冊,你不需要問。 – transilvlad

回答

0

AddAddress方法,只是增加了一個接收器的電子郵件地址到已經存在的那些,所以它是唯一合乎邏輯的,你當您在循環中使用AddAddress時,第一次收到第二次收到電子郵件的收件人。

只需在您的循環中調用clearAddresses方法,然後再添加地址AddAddress - 這將清除當前接收電子郵件地址列表,併爲您提供「全新啓動」,以便添加的下一個地址將成爲唯一接收地址當前發送郵件的電子郵件地址。

+0

非常感謝@CBroe它的工作原理 – Mima