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

Форум PHP

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

 

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

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

тема: Автоматическая рассылка писем
 
 автор: Дмитрий Смаль   (23.02.2010 в 11:03)   письмо автору
 
 

Здравствуйте!

Мне нужно сделать автоматическую рассылку писем.
Хочу здесь поделится своими мыслями и получить совет.

На хостинге узнал что есть ограничение 500 писем в час и 5000 пичем в сутки.
получается 100 писем каждые полчаса можно отсылать.
делаю всё на пхп, так что скрипт за 30 секунд должен разослать 100 небольших писем.

на сайте сделал таблицу mailer
`id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(255) collate utf8_unicode_ci NOT NULL,
  `text` text collate utf8_unicode_ci NOT NULL,
  `number` int(10) unsigned default '0',
  `yes` tinyint(1) NOT NULL default '0',

name - название письма
text - текст
number - количество пользователей, которым уже разослали письма
yes - если 1 то нужно рассылать

потом сделал скрипт mailer.php, который запускается на сайте каждые полчаса через крон

$result=mysql_query("SELECT * FROM `mailer` WHERE yes=1 LIMIT 1");
if (mysql_num_rows($result)!=1) die; // завершить если не нужно ничего рассылать
$mailer = mysql_fetch_assoc($result);

$result=mysql_query("SELECT email FROM `user` ORDER BY id DESC LIMIT ".$mailer['number'].",100");
$i=0;
while ($q = mysql_fetch_assoc($result)) {
    $i++;
    email('noreply@'.$_SERVER['SERVER_NAME'],$q['email'],$mailer['name'],$mailer['text']); //email это моя функция отправки, там настроены хедеры и кодировка и т.д.
}

if ($i<100) mysql_query ("UPDATE `mailer` SET yes=0,number=number+$i WHERE id=".$mailer['id']);
else mysql_query ("UPDATE `mailer` SET number=number+$i WHERE id=".$mailer['id']);


делал первый раз, поэтому представления нет как делать правильно, жду коментариев

  Ответить  
 
 автор: Trianon   (23.02.2010 в 11:06)   письмо автору
 
   для: Дмитрий Смаль   (23.02.2010 в 11:03)
 

Что-то нигде не видно таблицы с подписчиками.

  Ответить  
 
 автор: Дмитрий Смаль   (23.02.2010 в 11:07)   письмо автору
 
   для: Trianon   (23.02.2010 в 11:06)
 

$result=mysql_query("SELECT email FROM `user` ORDER BY id DESC LIMIT ".$mailer['number'].",100");

вот, таблица юсеры

  Ответить  
 
 автор: Trianon   (23.02.2010 в 11:10)   письмо автору
 
   для: Дмитрий Смаль   (23.02.2010 в 11:07)
 

Здесь не видно проверки на то, что пользователь дал согласие на рассылку и впоследствии не отписался от нее.

Зато (по LIMIT 100) )очень хорошо видно, что Вам все равно кому посылать сообщения.

  Ответить  
 
 автор: Дмитрий Смаль   (23.02.2010 в 11:11)   письмо автору
 
   для: Trianon   (23.02.2010 в 11:10)
 

здесь этот вопрос не рассматривается, код максимально упрощен для понимания
вопрос в том правильно ли таким образом делать автоматическую рассылку
если да то хорошо, если нет, то посоветуйте как лучше

  Ответить  
 
 автор: Trianon   (23.02.2010 в 11:16)   письмо автору
 
   для: Дмитрий Смаль   (23.02.2010 в 11:11)
 

Это Вами он не рассматривается.
А мною - очень даже.
Правильно - невостребованных рассылок не выполнять вообще.

  Ответить  
 
 автор: hallboy3   (23.02.2010 в 11:38)   письмо автору
 
   для: Trianon   (23.02.2010 в 11:06)
 

Это не обязательно подПИСчики. В случае смены сервера, например, нужно клиентам сообщить о переезде (переводе) хостинга на другой сервер и предупредить, что б пользователи воздержитесь от внесения изменений на свои сайты.

  Ответить  
 
 автор: Trianon   (23.02.2010 в 11:44)   письмо автору
 
   для: hallboy3   (23.02.2010 в 11:38)
 

такие вещи делаются без привлечения e-mail - прямо контентом www-серверов (исходного и целевого) и логикой их работы.

  Ответить  
 
 автор: hallboy3   (23.02.2010 в 14:05)   письмо автору
 
   для: Trianon   (23.02.2010 в 11:44)
 

У меня хостер, получаеться, спамит. Пускай спамит. Я редко захожу на инфо страницу хостера.

  Ответить  
 
 автор: hallboy3   (23.02.2010 в 12:14)   письмо автору
 
   для: Дмитрий Смаль   (23.02.2010 в 11:03)
 

Если сервер может быть "не родной", можно использовать сокеты для рассылки через другой MX сервер, у которого нету ограничений.
В любом случае в обязательном порядке нужно делать в рассылке паузы после каждого е-мейла.

  Ответить  
 
 автор: Trianon   (23.02.2010 в 12:40)   письмо автору
 
   для: hallboy3   (23.02.2010 в 12:14)
 

Если это не спам - сервер не может быть неродной.

  Ответить  
 
 автор: hallboy3   (23.02.2010 в 13:57)   письмо автору
 
   для: Trianon   (23.02.2010 в 12:40)
 

По причине?

  Ответить  
 
 автор: Trianon   (23.02.2010 в 14:21)   письмо автору
 
   для: hallboy3   (23.02.2010 в 13:57)
 

Потому что у адекватного письма есть отправитель.
Которому просто незачем слать письма через левых субъектов.

  Ответить  
Rambler's Top100
вверх

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