2016-02-10 2 views
-3

Как отправлять отправления всем пользователям в базе данных, не помеченные фильтрами нежелательной почты? Я предполагаю, что вам придется отправлять электронные письма в течение дня в очередях в течение месяца или меньше. Конечно, сразу с места в карьер, я могу получить все адреса электронной почты пользователей простым запросом select 'email' from 'users', но реализация надлежащего способа выполнения такой задачи - это то, где я, кажется, потерян ... Раньше я использовал такие сервисы, как sendgrid, но какие рекомендации придерживаются эти компании для того, чтобы оставаться в стороне от всех спам-фильтров?Отправить письмо всем пользователям в базе данных

+3

Просто ответил ... Да. Вы можете взглянуть на http://phpmailer.worxware.com/index.php?pg=examplebmail – Dwza

+0

Как вы можете отправить сообщение? [1K, 1M, ...] Вы хотите отправлять персонализированные сообщения? [например. разные To; to Subject: в каждом сообщении? Я пытаюсь угадать, если вы перейдете порог «больших проблем на следующем этапе (почтовый сервер)». – AnFi

+0

@ AndrzejA.Filip Отправляя около полумиллиона каждый одно и то же сообщение – Colton

ответ

6

Да, вы можете это сделать. следуйте данному коду.

while($row = mysql_fetch_array($result)) 
{ 
    $addresses[] = $row['email']; 
} 
$to = implode(", ", $addresses); 
$subject = 'the subject'; 
$message = 'hello'; 
mail($to, "Your Subject", "A message set by you.", "If header information."); 

Сначала вы должны собрать весь адрес электронной почты как разделенный запятой. после этого просто используйте функцию почты для отправки почты всем пользователям одновременно.

Если вы хотите отправить почту отдельно, то используйте:

while($row = mysql_fetch_array($result)) 
{ 
    $to = $row['email']; 
    $subject = 'the subject'; 
    $message = 'hello'; 
    mail($to, "Your Subject", "A message set by you.", "If header information."); 
} 

Обновления: Как mysql_ * осуждается, пожалуйста, используйте mysqli_ * вместо всех функций.

while($row = mysqli_fetch_array($result)) 
{ 
    $addresses[] = $row['email']; 
} 
$to = implode(", ", $addresses); 
$subject = 'the subject'; 
$message = 'hello'; 
mail($to, "Your Subject", "A message set by you.", "If header information."); 

И

while($row = mysqli_fetch_array($result)) 
{ 
    $to = $row['email']; 
    $subject = 'the subject'; 
    $message = 'hello'; 
    mail($to, "Your Subject", "A message set by you.", "If header information."); 
} 

Пожалуйста, прочитайте руководство по mysqli_*.

+2

Я рекомендую вам НЕ использовать [mysql] (http://php.net/manual/de/book.mysql.php) с момента его лишения. вместо этого используйте [mysqli] (http://php.net/manual/de/book.mysqli.php) или [pdo] (http://php.net/manual/de/book.pdo.php) – Dwza

+1

Да, я знаете, лучший способ - использовать mysqli или PDO. –

+0

Благодарим вас за ответ. Я ценю это, и он отлично работает. Извинения за очень поздний ответ. – Colton

0

После того, как у вас есть свой результирующий набор, вы можете прокручивать и называть mail() на каждом 1. Будем надеяться, что ваш сервер сможет справиться с этим.

foreach($result as $user) { 
    mail($user->email,"My subject",$msg); 
} 
+0

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

+0

, используя функцию mail(), это не очень хорошая идея, но это должно начинаться с – Angelo

+0

На самом деле это не очень хорошая идея. PHPMailer лучше использовать и проще. – Dwza

0

Я использовал PHPMailer для отправки писем. Это просто. Просто повторите все электронные письма из БД и отправьте эту библиотеку.

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