Рассылка писем по базе из mysql

Статус
В этой теме нельзя размещать новые ответы.

Ardis

Профессор
Регистрация
26 Мар 2008
Сообщения
209
Реакции
41
Имеем базу в которой есть почтовые адреса
дергаем из базы эти адреса запросом например:
Код:
SELECT u.mail FROM `lm_balances` AS lb JOIN users AS u ON u.uid = lb.uid WHERE lb.balance < 1000
Результат:
mail
x@mail.ru
xx@test5.test
xxx@nkjnk.ru
cpa-xxx@yandex.ru
xx@yandex.ru
xx@gmail.com

Если бы в результате был бы 1 email то вопросов бы у меня не возникло
Собственно вопрос, как разослать всем кто в результате. (подставлять ручками не вариант, их в будущем может быть сотни...)

Я начинаю только изучать php, по этому приходится обращаться к Вам за помощью :)
 

Delk0

Гуру форума
Регистрация
26 Мар 2010
Сообщения
290
Реакции
57
Простейший пример, с использованием функции mail
PHP:
$emails = [
    'x@mail.ru',
    'xx@test5.test',
    'xxx@nkjnk.ru',
    'cpa-xxx@yandex.ru',
    'xx@yandex.ru',
    'xx@gmail.com',
];
foreach ($emails as $email) {
    mail($email, 'Тема письма', 'Текст письма');
}
 

Ardis

Профессор
Регистрация
26 Мар 2008
Сообщения
209
Реакции
41
Ребят, только не смейтесь)
Код:
$sql = 'SELECT u.mail FROM `lm_balances` AS lb JOIN users AS u ON u.uid = lb.uid WHERE lb.balance < 1000';
$result = mysql_query($sql);
$arr = array();

while ($row = mysql_fetch_array($result)) {
$arr[$row['mail']]= $row['value'];
} 

foreach ($arr as $email) {
    mail($email, 'Тема письма', 'Текст письма');
}

Не работает, что не так
 

stealthdebuger

Механик
Команда форума
Регистрация
25 Авг 2008
Сообщения
681
Реакции
1.621
PHP:
$q = mysql_query("SELECT u.mail as email FROM `lm_balances` AS lb JOIN users AS u ON u.uid = lb.uid WHERE lb.balance < 1000");
while($r = mysql_fetch_assoc($q))
$array_emails[] = $r['email'];
$to = implode(', ', $array_emails);
mail($to, $subj, $message);
 

Ardis

Профессор
Регистрация
26 Мар 2008
Сообщения
209
Реакции
41
PHP:
$q = mysql_query("SELECT u.mail as email FROM `lm_balances` AS lb JOIN users AS u ON u.uid = lb.uid WHERE lb.balance < 1000");
while($r = mysql_fetch_assoc($q))
$array_emails[] = $r['email'];
$to = implode(', ', $array_emails);
mail($to, $subj, $message);
Получилось, но implode вставляются все емейлы сразу, можно как то сделать что бы это происходило циклом, выслал первому, перешел к другому.
========================
Сделал, получилось вот так =)
Код:
$q = mysql_query("SELECT u.mail as email FROM `lm_balances` AS lb JOIN users AS u ON u.uid = lb.uid WHERE lb.balance < 1000");
while($r = mysql_fetch_assoc($q))
$array_emails[] = $r['email'];

$count = count($array_emails);
for ($i=0; $i<$count; $i++){
    echo $array_emails[$i] . '<br>';
    $to = $array_emails[$i];
    mail($to, Тест, Текст);
}
 
Последнее редактирование:

Delk0

Гуру форума
Регистрация
26 Мар 2010
Сообщения
290
Реакции
57
Тогда уже можно без лишнего цикла
PHP:
$q = mysql_query("SELECT u.mail as email FROM `lm_balances` AS lb JOIN users AS u ON u.uid = lb.uid WHERE lb.balance < 1000");
while ($r = mysql_fetch_assoc($q)) {
        mail($r['email'], 'Тест', 'Текст');
}
 

stealthdebuger

Механик
Команда форума
Регистрация
25 Авг 2008
Сообщения
681
Реакции
1.621
Получилось, но implode вставляются все емейлы сразу
Так всем сразу и отправятся письма. Если текст письма одинаковый, то зачем нужны лишние телодвижения?
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху