Добрый день! Помогите пожалуйста, чтото голова совсем не варит уже) Задача состоит в том чтобы отправлять пользователям письма через функцию mail (выбирая их из бд) в определнное время через CRON... И если вдруг ошибка то продолжить рассылать с последнего удачного... Я так понимаю что нужно вытащить все емаил из базы, и через цикл запустить это Пока насобирал вот такой код, конечно же не рабочий) Код (Text): $result = mysql_query("SELECT * FROM users",$db); while ($row = mysql_fetch_array($result)){ for ($i=0; $i < count ($row['id']); $i++){ if (!empty($row['email'][$i])){ if(echo $row['email'];){ echo "Адрес - ".$row[email]." - статус ОК"; } else { echo "Адрес - ".$row[email]." - статус BAD"; } }
Каждую отдельную рассылку на каждый имеил надо логить в бд и тогда сразу поймешь какие уже ушли и какие надо разослать
Нахрен вообще вот это? Код (Text): for ($i=0; $i < count ($row['id']); $i++){ Код (Text): if(echo $row['email'];){ Пипец какой-то... echo в if-е, да ещё с ; на конце PHP: <? $result = mysql_query("SELECT * FROM `users`", $db); while($row = mysql_fetch_array($result)) { if(!empty($row['email'])) { echo 'Адрес - ' . $row['email'] . ' - статус ОК'; } else { echo 'Адрес - ' . $row['email'] . ' - статус BAD'; } } Видимо, ты такое хотел для тестового просмотра списка адресов. Намёка на попытку отправить письмо - вообще не вижу в коде.
Код (Text): $result = mysql_query("SELECT email FROM users",$db); while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){ if (!empty($row['email'])){ if(mail($row['email'], $subject, $message, $headers)){ echo "Адрес - ".$row[email]." - статус ОК"; } else { echo "Адрес - ".$row[email]." - статус BAD"; } } } Ну вроде вот правильный цикл с рассылкой по всем ?? А скажите, если допустим во время выполнения я прерву цикл, а потом запущу снова, он же будет рассылать с самого начала ? Как сделать что бы рассылка продолжалась с того момента, где остановилась ? И как все это повесить на CRON что бы выполнялось в определенное время ? Очень благодарен !
т.е. мне надо вот тут Код (Text): echo "Адрес - ".$row[email]." - статус ОК"; Поставить чтобы статус записывался в бд ? А дальше как, что бы в следующий раз проверялось, и в случае ошибки продолжал с места ошибки ? Спасибо!
Перед запуском новой рассылки просмотреть б.д. и проверить до куда дошло. Начать с того места, где остановился. Неужели так трудно догадаться?
При создании рассылки создаешь на каждого подписанта запись в бд. Потом при запуске робота-рассылаки он берет часть свободных записей и отмечает их что забрал. При успешном отправлении помечает что отправил или вобще удаляет - это уже как тебе нрааца. При этом нужен еще один крон-подчищака который будет сбрасывать статус у тех записей что давно забрали и так и не отправили или у эррорных. Усё! Профит.