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

Форум PHP

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

 

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

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

тема: Рассылка e-mail
 
 автор: Loneliness   (26.12.2006 в 01:34)   письмо автору
 
 

Доброго времени суток. Помогите, пожалуйста, кто имеет возможность. Есть скрипт отправки e-mail( из примеров на softtime):
sendmail.php

<?php
header
('Content-Type: text/plain');
    include(
"./mail_class.php");
    
    
$mail = new Mail();
    
$mail -> to "login@domen.com"
    
//как сюда вставлять адреса из моей базы и отправлять на них поочередно письма?
    
$mail -> subject "test";
    
$mail -> msg "testing...";
    
$mail -> msg "testing...";
    
$mail -> rigorous_email_check 0;
    if(
$mail->send()){
        echo(
"Success");
    }else{
        echo(
"error");
    }
    echo(
"<br>");
    echo(
$mail -> msg);   
?>


mail_class.php

<?php
  
class Mail 
  
{
  
// создаем переменные, в которых хранится содержимое заголовков
  
var $to '';
  var 
$from '';
  var 
$reply_to '';
  var 
$cc '';
  var 
$bcc '';
  var 
$subject '';
  var 
$msg '';
  var 
$validate_email true
  
// проверяет допустимость почтовых адресов
  
var $rigorous_email_check true
  
// проверяет допустимость доменных имен по записям DNS
  
var $allow_empty_subject false
  
// допустимость пустого поля subject
  
var $allow_empty_msg false
  
// допустимость пустого поля msg
    
  
var $headers = array();   
  
/* массив $headers содержит все поля заголовка, кроме to и subject*/
    
  
function check_fields()
    
/* метод, проверяющий, переданы ли все значения заголовков
    и проверку допустимости почтовых адресов */
  
{
    if(empty(
$this -> to))
    {
      return 
false;       
    }
    if(!
$this -> allow_empty_subject && empty($this -> subject))
    {
      return 
false;       
    }
    if(!
$this -> allow_empty_msg && empty($this -> msg))
    {
      return 
false;       
    }
    
/* если есть дополнительные заголовки, помещаем их в массив $headers*/
    
if(!empty($this -> from))
    {
      
$this->headers[] = "From: $this -> from";
    }
    if(!empty(
$this -> reply_to))
    {
      
$this -> headers[] = "Reply_to: $this -> reply_to";
    } 
    
// проверяем допустимость почтового адреса      
    
if ($this -> validate_email)
    {
       if (!
preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i"$this -> to))
       {
          return 
false;
       }
       return 
true;
    }
  }
    
  function 
send()
  
/* метод отправки сообщения */
  
{
     if(!
$this -> check_fields()) return true;
     if (
mail($this -> tohtmlspecialcharsstripslashes(trim($this -> subject))),
        
htmlspecialchars(stripslashes(trim($this -> msg)))))
     {
        return 
true;
     }else{
        return 
false;
     } 
  }
}
?>

Как сделать такой цикл, чтобы в $mail -> to вставлялись поочередно e-mail адреса из моей базы, находящейся в текстовом файле и на них отправлялось письмо?

   
 
 автор: cheops   (26.12.2006 в 02:30)   письмо автору
 
   для: Loneliness   (26.12.2006 в 01:34)
 

При массовой рассылке было бы удобнее отказаться от класса, да и просто циклическая рассылка по одному e-mail за раз не очень эффективна, тут лучше воспользоваться почтовым заголовком Bcc. Возможно вас заинтересует тема по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=7487.
<?php 
$headers
.="Bcc: sidor@mysite.ru\r\n"
$headers.="Bcc: sidor1@mysite.ru\r\n"
$headers.="Bcc: sidor2@mysite.ru\r\n"
mail("zxcv@zxcv.ru",$tema,$piss,$headers); 
?>

   
 
 автор: loneliness   (26.12.2006 в 02:59)   письмо автору
 
   для: cheops   (26.12.2006 в 02:30)
 

Дело в том, что я хочу отправлять не на совсем обычные адреса, а на телефоны с включенным e-mail. Опсос не доставит письма с кучей адресов в заголовках.
А в таком виде по одиночке скрипт нормально доставляет. Поэтому, предпочтительнее именно циклическая рассылка по одному e-mail.
И база в файле уже есть, как мне из нее считывать адреса? Не в ручную ведь 5000 заголовков писать с адресами?

   
 
 автор: cheops   (26.12.2006 в 03:21)   письмо автору
 
   для: loneliness   (26.12.2006 в 02:59)
 

>И база в файле уже есть, как мне из нее считывать адреса?
В каком формате хранятся адреса в базе данных? Просто отдельный адрес на новой строке? Или файл содержит какую-то дополнительную информацию?

   
 
 автор: Loneliness   (26.12.2006 в 03:56)   письмо автору
 
   для: cheops   (26.12.2006 в 03:21)
 

Адреса каждый в новой строке, в файле *.txt

   
 
 автор: Loneliness   (26.12.2006 в 04:01)   письмо автору
 
   для: cheops   (26.12.2006 в 03:21)
 

Но сделать базу в ином формате(например 'адрес1','адрес2',....) я смогу и не средствами PHP. Если возможно, напишите, в каком формате удобнее всего представить базу, и как реализовать цикл отправки. Буду искренне благодарен.

   
 
 автор: Loneliness   (26.12.2006 в 04:14)   письмо автору
 
   для: cheops   (26.12.2006 в 02:30)
 

В упомянутом Вами топике нашел такой код:

<?PHP 
 $members
=array('inav@mysite.ru','petr@mysite.ru','sidor@mysite.ru'); 
 if(
sizeof($members)>0){ 
   for(
$i=0;$i<sizeof($members);$i++){ 
     
mail($members[$i],"Тема","Сообщение","Content-type: text/html; charset=windows-1251 \r\n"
   } 
 } 
?>

Но он почему-то не работает. Пишет: Parse error: parse error, unexpected '}' in /www/hitbiz01/www/htdocs/sendmail.php on line 4

   
 
 автор: Shiva   (26.12.2006 в 05:01)   письмо автору
 
   для: Loneliness   (26.12.2006 в 04:14)
 

Пропущено двоеточие после закрывающей скобки функции mail().

<?PHP  
 $members
=array('inav@mysite.ru','petr@mysite.ru','sidor@mysite.ru');  
 if(
sizeof($members)>0){  
   for(
$i=0;$i<sizeof($members);$i++){  
     
mail($members[$i],"Тема","Сообщение","Content-type: text/html; charset=windows-1251 \r\n");//здесь
   
}  
 }  
?> 

   
 
 автор: Loneliness   (26.12.2006 в 07:17)   письмо автору
 
   для: Shiva   (26.12.2006 в 05:01)
 

Спасибо. Исправил, все работает отлично.

   
 
 автор: Shiva   (26.12.2006 в 09:30)   письмо автору
 
   для: Loneliness   (26.12.2006 в 07:17)
 

То есть точка с запятой, конечно. С чего вдруг двоеточие? ) А ведь лингвист...

   
 
 автор: loneliness   (26.12.2006 в 17:16)   письмо автору
 
   для: Shiva   (26.12.2006 в 09:30)
 

Ну это не столь значимо. Я ведь понял. :)

   
Rambler's Top100
вверх

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