2017-01-08 2 views
1

Я использую плагин «PHPMailer-master» для отправки электронной почты на адреса, хранящиеся в моем db.
Попытка отправить почту с PHP Mailer и BCC

Я собираю все АДРЕСА в строке:

$recipients = "[email protected];[email protected];[email protected]"; // OR 
$recipients = "[email protected],[email protected],[email protected]"; 

Позже я установил BCC:

$mail->addBCC($recipients); 

Я также установить свою почту, чтобы получить почту:

$mail->addAddress('[email protected]'); 

Так , я не получаю никаких ошибок ... но единственное отправленное письмо - это одно для меня .. Какая проблема? Как я могу найти, что не так?

UPDATE

Это, как я создаю мой строку:

while($row = $stmt->fetch()){ 
    $recipients .= $row['email'] . ";"; 
} 

ответ

2

Вы не можете добавить письма как это. Документация для AddBCC выглядит так: AddBCC($address, $name = "").
Я рекомендую вам использовать цикл Еогеасп или что-то подобное:

$recipientsArray = explode(";",$recipients); //The delimiter depends on your string that separated the emails 
foreach($recipientsArray as $recipient) { 
    $mail->addBCC($recipient); 
} 

Update (Что касается вашего обновления)

Как создать массив не имеет значения. Ключевым моментом является то, что функция PHPMailer принимает только один BCC за вызов. Если вы его получите, вы можете сделать это следующим образом:

while($row = $stmt->fetch()){ 
    $recipients[] = $row["email"]; 
} 
+0

ok, проверьте мое обновление. Мне не нужно использовать explode .. я могу собирать почтовые адреса в массиве напрямую: $ stmt-> fetchAll(); –

+0

Только что обновлено –

+0

Внимание: trim() ожидает, что параметр 1 будет строкой. /plugins/PHPMailer-master/class.phpmailer.php // К сожалению, это была моя ошибка, которую я использовал -> fetchAll(); –