2015-08-14 4 views
1

Я в конце моей веревки и действительно очень признателен за любую помощь, которую вы могли бы сэкономить ...PHPMailer Mysqli множественным адреса электронной почты

У меня есть следующий код, и, хотя он работает на индивидуальной основе, я могу для жизнь меня не заставит его работать, чтобы все адреса электронной почты отправлялись одновременно с помощью PHPMailer.

Я пробовал StackOverflow последние несколько месяцев, пытаясь исправить количество комбинаций без успеха. На этом форуме обсуждается ряд дискуссий, и хотя я уже пробовал все решения, я все равно не могу заставить его работать. Если я оскорбляю кого-либо, потенциально дублируя вопрос, пожалуйста, примите мои извинения заранее.

<?php 

// Script Error Reporting 
//error_reporting(0); 

    // Require the form_functions to process the form 
    require('databaseConnect.php'); 

    // Require the Email Class Functions 
    require("mailApp/class.phpmailer.php"); 
    require("mailApp/class.smtp.php"); 

$mail = new PHPMailer; 

$mail->isSMTP(); 
$mail->SMTPKeepAlive=true; // SMTP connection will not close after each email sent, reduces SMTP overhead 
$mail->setFrom("[email protected]", "Girrawaa Games"); // Valid email address from sender and Company name. Only Company name will be displayed 

$mail->Subject='CASH Trader | The Spirit Stone'; // This adds the subject title in the subject line field 

    // Create a connection to MySQL and the database: 
    $con = mysqli_connect($hostname, $username, $password, $database); 

    // Check if the connection is active: 
    if(!$con) { 
     header('Location: alternate.php'); 
     } 

$result = mysqli_query($con, "SELECT fname, email FROM emails WHERE condition = 'condition'"); 

/* fetch associative array */ 
    while ($row = $result->fetch_array()) { 
     $user['fname'][] = $row["fname"]; 
     $user['email'][] = $row["email"]; 
     } 

    $mail->AddAddress($user['email']); 

$mail->Body="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> 
<html xmlns=\"http://www.w3.org/1999/xhtml\"> 
<head> 
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> 
<title>CASH Trader</title> 
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /> 

</head> 

<body yahoo bgcolor=\"#ccffff\" style=\"margin:0; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px;\"> 
          <table align=\"center\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"border-collapse:collapse\"> 
           <tr> 
            <td style=\"padding-top:20px; padding-right:0px; padding-bottom:30px; padding-left:0px; color:#153643; font-size:28px; font-weight:bold; font-family:Arial, Helvetica, sans-serif;\"> 
            <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\"> 
            <tr> 
             <td class=\"header\" align=\"center\" bgcolor=\"#333333\" style=\"padding-top:10px; padding-right:10px; padding-bottom:10px; padding-left:10px; color:#153643; font-size:28px; font-weight:bold; font-family:Arial, Helvetica, sans-serif;\"> 
              <a href=\"http://www.girrawaagames.com\"><img src=\"http://www.girrawaagames.com/img/logo.jpg\" style=\"color:#FFFFFF\" alt=\"Cash Trader Logo\" style=\"display:block; max-width:100%; height:auto;\" /></a> 
             </td> 
            </tr> 
            </table> 
            </td> 
           </tr> 
           <tr> 
            <td bgcolor=\"#ffffff\" style=\"padding-top:40px; padding-right:30px; padding-bottom:20px; padding-left:30px;\"> 
             <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> 
              <tr> 
               <td align=\"center\" style=\"color:#153643; font-family:Arial, Helvetica, sans-serif; font-size:24px;\"> 
               <b>Hi " . $user['fname'] . "</b> 
               </td> 
              </tr> 
             </table> 
             </td> 
            </tr> 

          </table> 

</body> 
</html>"; 

print_r($user['fname']); 
print_r($user['email']); 

    if ($mail->send()) { 
     $updateCampaign = "UPDATE emails SET column = 'value' WHERE email = '" . mysqli_real_escape_string($row['email']) . "'"; 
     $results = mysqli_query($con, $updateCampaign); 
     } 

     // Clear all addresses and attachments for next loop 
     $mail->clearAddresses(); 

     mysqli_free_result($result); 

    mysqli_close($con); 
+0

Что у вас есть, когда вы эхо $ addr? – RGriffiths

+0

Вы хотите отправить одно письмо 50 получателям? Или 50 писем индивидуально для 50 получателей? Если первая проверяет сообщение тела, используя 'userFName'. Если последний переносит почтовые объекты в цикл набора результатов базы данных. – Parfait

+0

Привет, Ричард, я получаю последний адрес электронной почты в списке. Когда я обновляю базу данных каждый раз, когда используется электронное письмо, он находит следующее доступное электронное письмо для использования. –

ответ

0

Вам нужно сцепить $useremail для того, чтобы иметь несколько писем.

$userEmail = ''; 
foreach($rows as $row) { 
      $userFname = $row["fname"]; 
      $userEmail .= $row["email"] . ','; 
} 

Это, вероятно, будет легче соединить их в массив ..

foreach($rows as $row) { 
      $user['fname'][] = $row["fname"]; 
      $user['email'][] = $row["email"]; 
} 

Тогда вам не нужна функция explode позже.

....

или еще лучше установить его в петле while, не нужно foreach вообще.

while($row = $result->fetch_array()){ 
    $user['fname'][] = $row["fname"]; 
    $user['email'][] = $row["email"]; 
} 

Update:

<?php 
// Script Error Reporting 
//error_reporting(0); 
// Require the form_functions to process the form 
require('databaseConnect.php'); 
// Require the Email Class Functions 
require("mailApp/class.phpmailer.php"); 
require("mailApp/class.smtp.php"); 
$mail = new PHPMailer; 
$mail->isSMTP(); 
$mail->SMTPKeepAlive=true; // SMTP connection will not close after each email sent, reduces SMTP overhead 
$mail->setFrom("[email protected]", "Girrawaa Games"); // Valid email address from sender and Company name. Only Company name will be displayed 
$mail->Subject='CASH Trader | The Spirit Stone'; // This adds the subject title in the subject line field 
// Create a connection to MySQL and the database: 
$con = mysqli_connect($hostname, $username, $password, $database); 
// Check if the connection is active: 
if(!$con) { 
    header('Location: alternate.php'); 
    exit(); 
} 
$result = mysqli_query($con, "SELECT fname, email FROM emails WHERE condition = 'condition'"); 
/* fetch associative array */ 
while ($row = $result->fetch_array()) { 
    $user['fname'][] = $row["fname"]; 
    $user['email'][] = $row["email"]; 
} 
foreach($user['email'] as $key => $email) { 
    $mail->AddAddress($email); 
    $mail->Body="<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> 
<html xmlns=\"http://www.w3.org/1999/xhtml\"> 
<head> 
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /> 
<title>CASH Trader</title> 
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /> 

</head> 

<body yahoo bgcolor=\"#ccffff\" style=\"margin:0; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px;\"> 
          <table align=\"center\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\" style=\"border-collapse:collapse\"> 
           <tr> 
            <td style=\"padding-top:20px; padding-right:0px; padding-bottom:30px; padding-left:0px; color:#153643; font-size:28px; font-weight:bold; font-family:Arial, Helvetica, sans-serif;\"> 
            <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"600\"> 
            <tr> 
             <td class=\"header\" align=\"center\" bgcolor=\"#333333\" style=\"padding-top:10px; padding-right:10px; padding-bottom:10px; padding-left:10px; color:#153643; font-size:28px; font-weight:bold; font-family:Arial, Helvetica, sans-serif;\"> 
              <a href=\"http://www.girrawaagames.com\"><img src=\"http://www.girrawaagames.com/img/logo.jpg\" style=\"color:#FFFFFF\" alt=\"Cash Trader Logo\" style=\"display:block; max-width:100%; height:auto;\" /></a> 
             </td> 
            </tr> 
            </table> 
            </td> 
           </tr> 
           <tr> 
            <td bgcolor=\"#ffffff\" style=\"padding-top:40px; padding-right:30px; padding-bottom:20px; padding-left:30px;\"> 
             <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\"> 
              <tr> 
               <td align=\"center\" style=\"color:#153643; font-family:Arial, Helvetica, sans-serif; font-size:24px;\"> 
               <b>Hi " . $user['fname'][$key] . "</b> 
               </td> 
              </tr> 
             </table> 
             </td> 
            </tr> 

          </table> 

</body> 
</html>"; 
    if ($mail->send()) { 
     $updateCampaign = "UPDATE emails SET column = 'value' WHERE email = '" . mysqli_real_escape_string($row['email']) . "'"; 
     $results = mysqli_query($con, $updateCampaign); 
    } 
    // Clear all addresses and attachments for next loop 
    $mail->clearAddresses(); 
    mysqli_free_result($result); 
    mysqli_close($con); 
} 
+0

Привет Крис, я попробую это, когда вернусь домой. Причина, по которой я взорвалась, - это отправлять письма получателям по отдельности. Возможно, ваша рекомендация уже делает это, поэтому я попробую.Спасибо –

+0

Есть ли '$ row [" email "]' в нем есть запятые? – chris85

+0

Нет, это не так. Я пробовал примеры без ошибок или писем, и это должно сводиться к моей неопытности. Я буду продолжать работать над этим. Спасибо за помощь. –

0

Вы говорите, что вы смотрели везде ... кроме кода у вас уже есть! Существует a mailing list example provided with PHPMailer, который делает именно то, что вы просите, правильно и эффективно.

В вашем коде вы пытаетесь отправить одно сообщение на 50 человек, а не 50 на 50, и оно также выведет все адреса всем получателям, так что это, как правило, плохая идея.

Вы основали свой код на устаревшем примере и, вероятно, используете старую версию PHPMailer, поэтому get the latest.

+0

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

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