Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Определить, успешно ли доставлена почта
Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2008
Помог: 0 раз(а)
Как удалить из базы данных адреса мыл после удачной отправки?
Champion
Отправлено: 02 Декабря, 2008 - 12:03:06
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Если под удачной отправкой вы подразумеваете, что сообщение дошло до пользователя (а не просто отправилось), то шлите ему в сообщении ссылку, в которой каким-либо образом идентифицируется тот адрес, который вы хотите удалить. Он пройдет по ссылке, в которой выполняется delete from table1 where condition.
А если удалять просто после того, как функция отправки не выдала ошибок, то еще проще - адрес у вас есть...
Ыыы
Отправлено: 02 Декабря, 2008 - 12:53:26
Частый гость
Покинул форум
Сообщений всего: 169
Дата рег-ции: Июль 2008 Откуда: Россия, Хабаровск
Помог: 0 раз(а)
Хм... но если второй вариант, то существует вероятность, отличная от нуля, что письмо будет не доставлено, а из таблицы адрес будет удален. Я предпологаю, что можно совместить два варианта.
А если Вам просто нужен ситаксис удаления, то откройте phpMyAdmin, нажмите на нужном мыле удалить, и скопируйте sql код. Это просто.
Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2008
Помог: 0 раз(а)
Champion пишет:
Если под удачной отправкой вы подразумеваете, что сообщение дошло до пользователя (а не просто отправилось), то шлите ему в сообщении ссылку, в которой каким-либо образом идентифицируется тот адрес, который вы хотите удалить. Он пройдет по ссылке, в которой выполняется delete from table1 where condition.
Можно по подробнее какую ссылку написать?
А что касается просто удаление, то надо это сделать не руками а скрипт будет сам удалять те что отправил.
Ыыы
Отправлено: 03 Декабря, 2008 - 09:39:15
Частый гость
Покинул форум
Сообщений всего: 169
Дата рег-ции: Июль 2008 Откуда: Россия, Хабаровск
Помог: 0 раз(а)
bizi пишет:
А что касается просто удаление, то надо это сделать не руками а скрипт будет сам удалять те что отправил.
Внимательности вам не занимать... Я не говорил удалять руками, я сказал где можно посмотреть как это делается на языке SQL.
Champion
Отправлено: 03 Декабря, 2008 - 09:46:55
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
у вас есть скрипт, кторый удаляет сообщения по некоторому условию. Просто подсоединяется к базе и выполняет delete.
Откуда взять условие. Самый простой случай (просто чтоб смысл):
Допустим в таблице у вас колонки email, id.
Вы посылаете пользователю сообщение и заканчиваете его словами
"пройдите по ссылке http://вашсайт/удаляющийскрипт?del_id=$N".
Когда формируете текст сообщения, встьавляете на место $N id того мыла, которое надо удвлить.
Ну а в скрипте запрос delete from xxx where id = $_GET['del_id']
bizi
Отправлено: 03 Декабря, 2008 - 16:30:07
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2008
Помог: 0 раз(а)
Вообщем надо после рассылки функцию поставить удалить то что отправил, все просто.
Как написать эту функцию?
Champion
Отправлено: 03 Декабря, 2008 - 16:42:12
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
Удалить в любом случае, и не важно, дошло ли до адресата?
Когда вы отправляли, вы каким-то запротом select email from table where condition выбрали мыло. После отправки сделайте delete from table where condition. condition - одно и то же условие
bizi
Отправлено: 04 Декабря, 2008 - 14:40:56
Новичок
Покинул форум
Сообщений всего: 17
Дата рег-ции: Нояб. 2008
$sql2="SELECT * FROM ". $db_prefix ."messages group by ob_email";
$sel_an2=mysql_query("$sql2");
while($an=mysql_fetch_array($sel_an2)) {
$ob_email=$an["ob_email"];
mail("$ob_email", "$subj", "$msg\n\n", $headers);
echo "<li>$ob_email - отправлено!";
$count ++;
if ($count == 15) die();
}
?>
Вот такой код, что у меня не получается добавить, ошибку выдает.
Куда вставить эту функцию?
valenok
Отправлено: 10 Декабря, 2008 - 08:44:50
Здесь могла бы быть ваша реклама
Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006 Откуда: Israel
Помог: 3 раз(а)
Перенесено из темы "Удаление из базы данных" После echo "<li>$ob_email - отправлено!";
бы тебе порекомендовал вызвать функцию mail один раз, и указать
в адресатах за раз сразу всех Mail("a@b.c, d@e.f , ...", "Subj" , "Message", "header")
----- Truly yours, Sasha.
Champion
Отправлено: 10 Декабря, 2008 - 08:56:29
Активный участник
Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008 Откуда: Москва
Помог: 57 раз(а)
А я бы еще посоветовал $переменные выносить из "таких строк", тем более, когда строка состоит только из переменной. Это отрицательно влияет на быстродействие. В таком скрипте, конечно, не принципиально, но, кстати, если будете заниматься спам-рассылкой ( ) и делать это в большом цикле, то заметите.
И еще запрос SELECT * FROM ". $db_prefix ."messages group by ob_email, по-моему не сработает. Из-за group by в таком контексте.
Если вы шлете одно сообщение всем, то в цикле действительно не надо. А если всем разные сообщения, то надо.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.