Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Почтовая рассылка
 
 автор: yuriy   (20.05.2006 в 10:00)   письмо автору
 
 

Есть скрипт который берет email из таблицы mysql tab1, вставляет в письмо результат tab1.php и отправляет пользователю.
Проблема вот в чем, адресов в таблице mysql tab1 десятки, а письмо отправляется только первому, не могу понять почему?
Подскажите пожалуйста!

Вот код


<?
include("var.php");
mysql_select_db ($DB);

$query = "SELECT COUNT(*) FROM tab1 ";


$result = mysql_query($query);
$count = mysql_result($result,0,'COUNT(*)');




$query1 = "SELECT * FROM tab1";

$result1 = mysql_query($query1);

for ($i=0; $i < $count; $i++)

{


$f=mysql_fetch_array($result1);

$email = $f['email'];

$adminemail = "sending@dalinoboyschik.com";

include("tab1.php");

$headers=null;
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
$headers.="From:sending@dalinoboyschik.com <".$adminemail.">\r\n";
$headers.="X-Mailer: PHP/".phpversion()."\r\n";



$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
$boardurl="http://$host$self";
$boardurl=str_replace("board/tools.php", "board/index.php", $boardurl);



mail("$email", "Рассылка1", $message, $headers);
}
?>

   
 
 автор: cheops   (20.05.2006 в 12:21)   письмо автору
 
   для: yuriy   (20.05.2006 в 10:00)
 

А что требуется? Отправить письма всем или отправить письмо не первому адресату, а какому-то конкретному?

   
 
 автор: yuriy   (20.05.2006 в 13:24)   письмо автору
 
   для: cheops   (20.05.2006 в 12:21)
 

Отправить всем пользователям

   
 
 автор: cheops   (20.05.2006 в 17:40)   письмо автору
 
   для: yuriy   (20.05.2006 в 13:24)
 

Попробуйте воспользоваться следующим кодом
<?php
  
include("var.php");
  
mysql_select_db ($DB);

  
$query "SELECT * FROM tab1";
  
$result mysql_query($query);
  if(!
$result) exit(mysql_error());
  if(
mysql_num_rows($result) > 0)
  {
    while(
$f mysql_fetch_array($result))
    {
      
$email $f['email'];
      
$adminemail "sending@dalinoboyschik.com";
      include(
"tab1.php");
      
$headers=null
      
$headers.="Content-Type: text/html; charset=windows-1251\r\n";
      
$headers.="From:sending@dalinoboyschik.com <".$adminemail.">\r\n";
      
$headers.="X-Mailer: PHP/".phpversion()."\r\n";

      
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"];
      
$boardurl="http://$host$self";
      
$boardurl=str_replace("board/tools.php""board/index.php"$boardurl);

      if(!
mail($email"Рассылка1"$message$headers)) exit("Письмо не может быть отправлено<br>");
    }
  }
?>

   
 
 автор: yuriy   (20.05.2006 в 21:28)   письмо автору
 
   для: cheops   (20.05.2006 в 17:40)
 

Эффект тот же, я в принципе не вижу цикла отправки всем пользователям которые есть в таблице, как это вставить?

   
 
 автор: Loki   (20.05.2006 в 22:24)   письмо автору
 
   для: yuriy   (20.05.2006 в 21:28)
 

<?
    
while($f mysql_fetch_array($result))  //цикл начался
    

      
$email $f['email']; 
      
$adminemail "sending@dalinoboyschik.com"
      include(
"tab1.php"); 
      
$headers=null
      
$headers.="Content-Type: text/html; charset=windows-1251\r\n"
      
$headers.="From:sending@dalinoboyschik.com <".$adminemail.">\r\n"
      
$headers.="X-Mailer: PHP/".phpversion()."\r\n"

      
$host=$_SERVER["HTTP_HOST"]; $self=$_SERVER["PHP_SELF"]; 
      
$boardurl="http://$host$self"
      
$boardurl=str_replace("board/tools.php""board/index.php"$boardurl); 

      if(!
mail($email"Рассылка1"$message$headers)) exit("Письмо не может быть отправлено<br>"); 
    } 
//цикл закончился


А у вас хостер не накладывает ограниченией на количество отправляемых писем в единицу времени?

   
 
 автор: yuriy   (21.05.2006 в 11:26)   письмо автору
 
   для: Loki   (20.05.2006 в 22:24)
 

Да все верно, извеняюсь заработался, просто с while давно не работал.
Ограничений на количество нет, я в принципе пробовал на локалке в Денвере, эффект тот же отправляется одно письмо по первому адресу. Подскажите что мне делать?

   
 
 автор: cheops   (21.05.2006 в 11:46)   письмо автору
 
   для: yuriy   (21.05.2006 в 11:26)
 

Срабатывает ли код
<?php
 
exit("Письмо не может быть отправлено<br>");
?>

   
 
 автор: yuriy   (21.05.2006 в 12:40)   письмо автору
 
   для: cheops   (21.05.2006 в 11:46)
 

Нет не срабатывает
Нормально выполняется скрипт

   
 
 автор: cheops   (21.05.2006 в 14:51)   письмо автору
 
   для: yuriy   (21.05.2006 в 12:40)
 

Тогда дело не в коде, а в почтовом сервер, который, скорее всего, не позволяет отправлять много почтовых отправлений за короткое время. Лучше проконсультироваться по этому вопросу с тех.поддержкой хостера. Можно также поставить задержку в цикле, чтобы между отправкой писем был небольшой интервал
<?php
  sleep
(5);
?>

   
 
 автор: yuriy   (21.05.2006 в 19:23)   письмо автору
 
   для: cheops   (21.05.2006 в 14:51)
 

Техническая поддержка говорит что ограничений не каких нет, скорей всего говорят у вас ошибка в скрипте в том числе в файле который я вызываю include tab1.php, посмотрите там используется буфферизация, может там ошибка?

   
 
 автор: Trianon   (21.05.2006 в 19:39)   письмо автору
 
   для: yuriy   (21.05.2006 в 19:23)
 

Вы внутри include перекрываете переменную $result другим значением, теряя при этом контекст результата выборки БД. Цикл тут же завершается.
Такие файлы не запрашивают в цикле.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования