|
|
|
| Здравствуйте!
Мне нужно сделать автоматическую рассылку писем.
Хочу здесь поделится своими мыслями и получить совет.
На хостинге узнал что есть ограничение 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']);
|
делал первый раз, поэтому представления нет как делать правильно, жду коментариев | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(23.02.2010 в 11:03)
| | Что-то нигде не видно таблицы с подписчиками. | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2010 в 11:06)
| | $result=mysql_query("SELECT email FROM `user` ORDER BY id DESC LIMIT ".$mailer['number'].",100");
вот, таблица юсеры | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(23.02.2010 в 11:07)
| | Здесь не видно проверки на то, что пользователь дал согласие на рассылку и впоследствии не отписался от нее.
Зато (по LIMIT 100) )очень хорошо видно, что Вам все равно кому посылать сообщения. | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2010 в 11:10)
| | здесь этот вопрос не рассматривается, код максимально упрощен для понимания
вопрос в том правильно ли таким образом делать автоматическую рассылку
если да то хорошо, если нет, то посоветуйте как лучше | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(23.02.2010 в 11:11)
| | Это Вами он не рассматривается.
А мною - очень даже.
Правильно - невостребованных рассылок не выполнять вообще. | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2010 в 11:06)
| | Это не обязательно подПИСчики. В случае смены сервера, например, нужно клиентам сообщить о переезде (переводе) хостинга на другой сервер и предупредить, что б пользователи воздержитесь от внесения изменений на свои сайты. | |
|
|
|
|
|
|
|
для: hallboy3
(23.02.2010 в 11:38)
| | такие вещи делаются без привлечения e-mail - прямо контентом www-серверов (исходного и целевого) и логикой их работы. | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2010 в 11:44)
| | У меня хостер, получаеться, спамит. Пускай спамит. Я редко захожу на инфо страницу хостера. | |
|
|
|
|
|
|
|
для: Дмитрий Смаль
(23.02.2010 в 11:03)
| | Если сервер может быть "не родной", можно использовать сокеты для рассылки через другой MX сервер, у которого нету ограничений.
В любом случае в обязательном порядке нужно делать в рассылке паузы после каждого е-мейла. | |
|
|
|
|
|
|
|
для: hallboy3
(23.02.2010 в 12:14)
| | Если это не спам - сервер не может быть неродной. | |
|
|
|
|
|
|
|
для: Trianon
(23.02.2010 в 12:40)
| | По причине? | |
|
|
|
|
|
|
|
для: hallboy3
(23.02.2010 в 13:57)
| | Потому что у адекватного письма есть отправитель.
Которому просто незачем слать письма через левых субъектов. | |
|
|
|