2014-02-13 3 views
0

Я спросил question yesterday о отправке электронной почты каждые три дня, на который был дан ответ, поэтому я не уверен, должен ли я создать новый или добавить в старый.E-mail только отправляется

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

** UPDATE ****

Я добавил множество получателей в то время цикла, а также установить $ предмет и $ заголовки для пустых значений перед добавлением значений. Это сработало.

$sql = "SELECT * FROM bookings " . 
     "WHERE DATE(date) > DATE(NOW()) " . 
     "AND dateofquote != '' " . 
     "AND email != '' " . 
     "AND confirmed = 0"; 

$result = mysql_query($sql); 
$num_rows = mysql_numrows($result); 

$today = date('Y-m-d'); 

if ($num_rows) { 
    while ($row = mysql_fetch_array($result)) { 
       $recipients = array(); // Updated 
     $id = $row['id']; 
     // rest of rows from db   

     $date_time1 = new DateTime($today); 
     $date_time2 = new DateTime($date_of_quote); 
     $interval = $date_time1->diff($date_time2); 
     $diff = $interval->format('%a'); 

     if ($diff % 3 == 0) { 

      if ($type == 'W') { 
       $message = '<table width="95%" border="0" cellspacing="0" align="center" style="border:1px solid #999;">'; 
       // rest of table 

       echo '<h1>Weddding Email</h1>'.$message.'<br />End Wedding<br /><br /><hr>'; 
       // tried to send email from here for this option 
      } 
      elseif ($type == 'D') {    
       $message = '<table width="95%" border="0" cellspacing="0" align="center" style="border:1px solid #999;">'; 
       // rest of table 

       echo '<h1>Debs Email</h1>'.$message.'<br />End Debs<br /><br /><hr>'; 
       // tried to send email from here for this option 
      } 
      elseif ($type == 'CR') { 
       $message = '<table width="95%" border="0" cellspacing="0" align="center" style="border:1px solid #999;">'; 
       // rest of table 

       echo '<h1>Country Run Email</h1>'.$message.'<br />End Country Run<br /><br /><hr>'; 
       // tried to send email from here for this option 
      } 
      elseif ($type == 'H') { 

       $message = '<table width="95%" border="0" cellspacing="0" align="center" style="border:1px solid #999;">'; 
       // rest of table 

       echo '<h1>Hourly Email</h1>'.$message.'<br />End Hourly<br /><br /><hr>'; 
       // tried to send email from here for this option 
      } 
     } else { 
      echo 'something went wrong'; 
     } 

     $recipients[] = $email; 
       $subject = ''; // Updated 
       $headers = ''; // Updated 
     $subject .= "An $type_value Enquiry has been received from company.ie"; 
     $headers .= 'MIME-Version: 1.0' . "\r\n"; 
     $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
     $headers .= 'From: Name <[email protected]>' . "\r\n"; 

     foreach($recipients as $to){ 
      if(mail($to, $subject, $message, $headers)) { 
       echo "E-Mail Sent to "; 
       echo $to.'<br />'; 
      } else { 
       echo "There was a problem"; 
      } 
     } 
    } 
} 
+0

Ваш код имеет устаревшие функции, обновляется до новой версии PHP, не использует устаревшие. И где задан $ email –

+0

Здесь определяется адрес электронной почты - // остальное количество строк из db. Я просто оставил его, поскольку список был таким длинным –

ответ

1

Попробуйте, как это внутри цикла. Ваш почтовый контент находится внутри цикла while, но вы пытаетесь использовать функцию почты вне цикла while, поэтому он отправляет последний контент во все ваши письма в массив $ recipients.

$subject=''; 
    $headers=''; 
    $subject .= "An $type_value Enquiry has been received from company.ie"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $headers .= 'From: Absolute Limos <[email protected]>' . "\r\n"; 
    mail($email, $subject, $message, $headers); 
+0

Вы имеете в виду в моей if if? Письмо отправляется во время цикла –

1

ваша проблема лежит здесь:

$recipients[] = $email; 

Вы создаете свой электронный массив за пределами цикла, таким образом, вы получите только последнее значение адреса электронной почты.

положить его в

while ($row = mysql_fetch_array($result)) { 
+0

на самом деле он находится в цикле while! – wesamly

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