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
Форумы портала PHP.SU :: Версия для печати :: Определить, успешно ли доставлена почта
Форумы портала PHP.SU » PHP » Программирование на PHP » Определить, успешно ли доставлена почта

Страниц (1): [1]
 

1. bizi - 02 Декабря, 2008 - 09:56:05 - перейти к сообщению
Как удалить из базы данных адреса мыл после удачной отправки?
2. Champion - 02 Декабря, 2008 - 12:03:06 - перейти к сообщению
Если под удачной отправкой вы подразумеваете, что сообщение дошло до пользователя (а не просто отправилось), то шлите ему в сообщении ссылку, в которой каким-либо образом идентифицируется тот адрес, который вы хотите удалить. Он пройдет по ссылке, в которой выполняется delete from table1 where condition.

А если удалять просто после того, как функция отправки не выдала ошибок, то еще проще - адрес у вас есть...
3. Ыыы - 02 Декабря, 2008 - 12:53:26 - перейти к сообщению
Хм... но если второй вариант, то существует вероятность, отличная от нуля, что письмо будет не доставлено, а из таблицы адрес будет удален. Я предпологаю, что можно совместить два варианта.

А если Вам просто нужен ситаксис удаления, то откройте phpMyAdmin, нажмите на нужном мыле удалить, и скопируйте sql код. Это просто.
4. bizi - 03 Декабря, 2008 - 08:16:23 - перейти к сообщению
Champion пишет:
Если под удачной отправкой вы подразумеваете, что сообщение дошло до пользователя (а не просто отправилось), то шлите ему в сообщении ссылку, в которой каким-либо образом идентифицируется тот адрес, который вы хотите удалить. Он пройдет по ссылке, в которой выполняется delete from table1 where condition.


Можно по подробнее какую ссылку написать?

А что касается просто удаление, то надо это сделать не руками а скрипт будет сам удалять те что отправил.
5. Ыыы - 03 Декабря, 2008 - 09:39:15 - перейти к сообщению
bizi пишет:
А что касается просто удаление, то надо это сделать не руками а скрипт будет сам удалять те что отправил.

Внимательности вам не занимать... Я не говорил удалять руками, я сказал где можно посмотреть как это делается на языке SQL.
6. Champion - 03 Декабря, 2008 - 09:46:55 - перейти к сообщению
у вас есть скрипт, кторый удаляет сообщения по некоторому условию. Просто подсоединяется к базе и выполняет delete.
Откуда взять условие. Самый простой случай (просто чтоб смысл):
Допустим в таблице у вас колонки email, id.
Вы посылаете пользователю сообщение и заканчиваете его словами
"пройдите по ссылке http://вашсайт/удаляющийскрипт?del_id=$N".
Когда формируете текст сообщения, встьавляете на место $N id того мыла, которое надо удвлить.
Ну а в скрипте запрос delete from xxx where id = $_GET['del_id']
7. bizi - 03 Декабря, 2008 - 16:30:07 - перейти к сообщению
Вообщем надо после рассылки функцию поставить удалить то что отправил, все просто.

Как написать эту функцию?
8. Champion - 03 Декабря, 2008 - 16:42:12 - перейти к сообщению
Удалить в любом случае, и не важно, дошло ли до адресата?

Когда вы отправляли, вы каким-то запротом select email from table where condition выбрали мыло. После отправки сделайте delete from table where condition. condition - одно и то же условие
9. bizi - 04 Декабря, 2008 - 14:40:56 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1.  
  2.  
  3.  
  4. <?
  5.  
  6. $db_prefix="pst_"; // Префикс для таблицы
  7.  
  8. function dbc() {
  9.  $server = "localhost";
  10.  $login = "123";
  11.  $password = "123";
  12.  $database = "123";
  13.  $conn=mysql_connect($server,$login,$password);
  14.  mysql_select_db($database);
  15. }
  16.  
  17.  
  18. ?>
  19.  
  20. <?
  21.  
  22. $count = 0;
  23.  
  24. dbc();
  25.  
  26. $headers = 'MIME-Version: 1.0\r\n'.'Content-type: text/plain; charset=windows-1251\r\n'.'From: '.$return.'\r\nReply-To: '.$return.'\r\nReturn-Path: '.$return.'\r\nX-Mailer: PHP/'.phpversion().'\r\nContent-type: text/plain; charset=windows-1251';
  27.  
  28.  
  29.  
  30. $sql2="SELECT * FROM ". $db_prefix ."messages group by ob_email";
  31. $sel_an2=mysql_query("$sql2");
  32. while($an=mysql_fetch_array($sel_an2)) {
  33. $ob_email=$an["ob_email"];
  34.  
  35. mail("$ob_email", "$subj", "$msg\n\n", $headers);
  36. echo "<li>$ob_email - отправлено!";
  37.  
  38. $count ++;
  39.  
  40. if ($count == 15) die();
  41.       }
  42.       ?>
  43.  
  44.  


Вот такой код, что у меня не получается добавить, ошибку выдает.

Куда вставить эту функцию?
10. valenok - 10 Декабря, 2008 - 08:44:50 - перейти к сообщению
После echo "<li>$ob_email - отправлено!";
бы тебе порекомендовал вызвать функцию mail один раз, и указать
в адресатах за раз сразу всех Mail("a@b.c, d@e.f , ...", "Subj" , "Message", "header")
11. Champion - 10 Декабря, 2008 - 08:56:29 - перейти к сообщению
А я бы еще посоветовал $переменные выносить из "таких строк", тем более, когда строка состоит только из переменной. Это отрицательно влияет на быстродействие. В таком скрипте, конечно, не принципиально, но, кстати, если будете заниматься спам-рассылкой ( Улыбка ) и делать это в большом цикле, то заметите.

И еще запрос SELECT * FROM ". $db_prefix ."messages group by ob_email, по-моему не сработает. Из-за group by в таком контексте.

Если вы шлете одно сообщение всем, то в цикле действительно не надо. А если всем разные сообщения, то надо.

 

Powered by ExBB FM 1.0 RC1