2016-09-13 2 views
0

Как и в названии, я не могу отправить по электронной почте нескольким получателям, потому что я получить следующее сообщение об ошибке:PHPMailer: Отправить электронную почту нескольким адресатам ошибки

Message could not be sent. Mailer Error: You must provide at least one recipient email address.

Я использую этот код:

$stmt=$db->prepare("select email from app_users where enabled=1"); 
if (!$stmt) { 
    log_msg($db->error); 
    die(); 
} 
if (!test_execute($stmt->execute())) die("ERROR"); 
$emailto=fetchArray2($stmt); 
$stmt->close(); 
foreach ($emailto as $contacts) { 
    $mail->AddAddress($contacts); 
} 

Что случилось?

print_r ($ emailto);

Array 
(
[0] => Array 
    (
     [email] => [email protected] 
    ) 

[1] => Array 
    (
     [email] => [email protected] 
    ) 

[2] => Array 
    (
     [email] => [email protected] 
    ) 

)

+0

'$ mail-> AddAddress ($ Contacts-> электронная почта)'? – Natrium

+1

У вас есть массив массивов, и вы получаете доступ только к массиву верхнего уровня, поэтому вы делаете в значительной степени эквивалент '-> AddAddress (Array())' –

ответ

1

@Natrium чуть было его. Вы не получаете доступ к своим элементам массива правильно. Делают это так:

foreach ($emailto as $contacts) { 
    $mail->addAddress($contacts['email']); 
} 

Это также хорошая идея, чтобы проверить возвращаемые значения, возможно:

foreach ($emailto as $contacts) { 
    if (!$mail->addAddress($contacts['email'])) { 
    echo 'Address rejected: '.$contacts['email']; 
    } 
} 
+0

, он работает как шарм! Спасибо за решение и хороший вопрос о проверке. – Otto