2015-09-10 3 views
3

Я пытаюсь отправить сообщение всем пользователям на моем сайте с группой из 5. Однако, как у меня есть эта электронная почта, структурированная, я получаю ответ на запрос if вернуться говоря, что адрес электронной почты не был заполнен.Получение адресов электронной почты через цикл while и отправку php электронной почты

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

while ($stmt->fetch()) { 
      $to = $user_email; 
} 

Я посылаю тему и сообщение через мою форму с помощью AJAX. Я не получаю от этого никаких ошибок. Это часть меня отправляют обратно ко мне на мою страницу ..

else { 
    echo "Email Address was not filled out."; 
} 

Что я делаю не так, чтобы это сказать, адрес электронной почты не был заполнен в? Кроме того, если у меня есть адрес электронной почты более одного пользователя, будет ли он работать, или мне нужно будет структурировать $to по-другому?

Вот полный код:

$subject = $_POST['subject']; 
$message = $_POST['message']; 


try { 
    $con = mysqli_connect("localhost", "", "", ""); 
    if (mysqli_connect_errno()) { 
     printf("Connect failed: %s\n", mysqli_connect_error()); 
     exit(); 
    } 
    $stmt = $con->prepare("SELECT id, email, username FROM users WHERE `group` IN (5)"); 
    if (!$stmt || $con->error) { 
     // Check Errors for prepare 
      die('User/Player SELECT prepare() failed: ' . htmlspecialchars($con->error)); 
     } 
    if(!$stmt->execute()) { 
      die('User/Player SELECT execute() failed: ' . htmlspecialchars($stmt->error)); 
    } 
    $stmt->store_result(); 
} catch (Exception $e) { 
    die("User/Player SELECT execute() failed: " . $e->getMessage()); 
} 
    $stmt->bind_result($userid, $user_email, $username); 
while ($stmt->fetch()) { 
      $to = $user_email; 
}   
      $subject = 'Updated Status'; 
      $message = ''; 

      $from = "[email protected]"; 
      $Bcc = "[email protected]"; 

      // To send HTML mail, the Content-type header must be set 
      $headers = 'MIME-Version: 1.0' . "\r\n"; 
      $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

      // Additional headers 
      //$headers .= 'To: ' .$to;//. "\r\n"; 
      $headers .= 'From: ' .$from. "\r\n"; 
      $headers .= 'Bcc: '.$Bcc. "\r\n"; 

      // Send the email 
      //mail($to,$subject,$message,$headers); 
      //if(mail($to,$subject,$message,$headers)){ 
       // echo "Success"; 
      //} else { 
       // print_r(error_get_last()); 
       // echo "Fail"; 
      //} 


      if (!empty($email)) { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) { 

     //Should also do a check on the mail function 
     if (mail($to, $subject, $message, $headers)) { 
      echo "Your email was sent!"; // success message 
     } else { 
      echo "Mail could not be sent!"; // failed message 
     } 

    } else { 
     //Invalid email 
     echo "Invalid Email, please provide a valid email address."; 
    } 

} else { 
    echo "Email Address was not filled out."; 
} 
+0

Откуда вы получаете значение '$ user_email'? – Maximus2012

+0

Из моего bind_result '$ stmt-> bind_result ($ userid, $ user_email, $ username);' – Becky

+0

Да, вы правы. Виноват. 'while ($ stmt-> fetch()) { $ to = $ user_email; } 'Я думаю, что это просто переопределит значение' $ to'. Возможно, вам нужно обернуть всю логику отправки почты в это время цикла. – Maximus2012

ответ

2

Похоже $ электронная почта не определяется. Вы можете проверить $to вместо $email в:

if (!empty($email)) { 
    ... 
} 

так:

if (!empty($to)) { 
    ... 
} 

Для нескольких получателей, используйте:

$to .= $user_email . ','; 

после определения $to = ''; перед вашим время цикла

+0

Отлично! Я сделал это, хотя 'if (! Empty ($ user_email)) {' Должен ли я делать '$ to' вместо? Есть ли разница? – Becky

+0

Это не должно быть хорошо :) Примите мой ответ, если он помог thx – mattslone

+0

Еще раз спасибо !!! – Becky

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