Панель управления
Топ новостей
» DVD X Studios CloneDVD 5.6.1.1» Венок из ромашек / The Daisy Chain (2008)
» Замёрзшие / Frozen (2010) BDRip
» Мир Наизнанку 3: Африка (2012) SATRip
» Магия / Rough Magic (1995/HDTVRip)
» Переполох в Гималаях / Lissi und der wilde Kaiser (2007 ...
» Эпоха / Epoch (2001/DVDRip)
» Приключение на таинственном острове / Mysterious Island ...
» Вечера на хуторе близ Диканьки (2001/DVDRip)
» Movavi Video Suite 10.3 SE
Реклама
Своя рассылка на PHP
Новость опубликовал: administrator ( Добавлено : (17-08-2010, 22:09) )
В интернете есть много бесплатных сервисов. В том числе и услуги по рассылке писем подписчикам. Некоторые из них очень хороши. Но раз уж они бесплатны, значит тут же в письмах появляется реклама. Да и немалые формы для подписки с логотипом предоставителя услуг многих не устравивают.
Так почему бы не написать простенький движок для своей рассылки и отсылать письма своими силами?
Файл engine/modules/mymod.php не найден, его загрузка невозможна.
Форма для ввода адреса електронной почты будет состоять только из окна для ввода адреса и кнопки для подтверждения:
<input type="text" name="email" size="30">
<input type="submit" name="submit" value="подписаться"></form>
Итак, в окне для ввода текста, с именем email и видимой длиной в 30 символов, будет вводиться адрес електронной почты. После нажатия на кнопку с надписью подписаться, адрес будет передан скрипту ras.php для занесения в базу рассылки.
Далее давайте расмотрим скрипт ras.php который будет сохранять адрес почты в файле, выводить сообщение о результате и формы для подписки и отписки. Скрипт можно исполнить совсем просто - сохранить адрес, вывести соответствующее сообщение. Но могут возникнуть проблемы: кто-то может случайно подписаться несколько раз, кто-то может допустить опечатку и ввесли в поле адреса недопустимый символ или нарошно ввести билеберду. В таком случае база рассылки будет загрязнятсья, а неверные адреса станут приводить к ошибкам в работе скрипта. Вывод ясен - перед сохранением адреса следует проверить его на соответствие стандартам имен адресов електронных почтовых ящиков, а также на наличие в базе рассылки. Для того чтоб не рассматривать код по частям, я дам комментарии в самом коде:
$file = "maillist.txt"; // файл, содержащий адреса
error_reporting(0); // запрещаем вывод сообщений о возможных ошибках
function test_mail($char) // функция, проверяющая реальность адреса
{
$flag = false;
if (eregi("^[_.0-9a-z-]+@([0-9a-z][-0-9a-z.]+).([a-z]{2,3}$)", $char)) $flag = true;
if ($flag) return true;
else return false;
}
$email = trim(strtolower($email)); // получаем введеный в
// форму адрес с
// символами в нижнем регистре
function copy_mail($char) // проверяем, есть ли такой адрес в базе
{
$file = "maillist.txt";
$list = file($file);
for ($i = 0; $i < sizeof ($list); $i++)
if ($char == trim($list[$i])) $flag = true;
if ($flag) return true;
else return false;
}
echo "<center>";
if (is_file($file)) // далие проверяем адрес вышеописаными функциями
{
$maillist = file($file);
if (!$email == '') {
if (test_mail($email)) {
if (!copy_mail($email))
{
$maillist[] = " $email";
print "E-mail: $email добавлен базу рассылки</center>";
}
else print "E-mail: $email уже есть в базе</center>";
}
else print "E-mail: $email не сушествует</center>";
}
else print "</center>";
}
else print "Не найден файл $file ! Пожалуйста <A HREF="mailto:$fromemail">сообщите</a> мне о ошибке.</center>";
// выводи на екран форму с предложением подписки и отписки
echo "<br><center>Подписаться на рассылку<form method="post" action="ras.php" enctype="multipart/form-data">";
echo "Введите mail:<input type="text" name="email" size="30"><input type="submit" name="submit" value="подписаться"></form></center>";
echo "<CENTER><br><br><form method="post" action="ras.php" enctype="multipart/form-data">";
echo "Отписаться от рассылки<br>Введите mail:";
echo "<input type="text" name="delmail" size="15"><input type="submit" name="submit" value="Отписаться"></form></CENTER>";
// если пользователь решил отписаться - удаляем введеный адрес
$flag = false;
$fw = fopen($file, "w");
for ($i = 0; $i < sizeof ($maillist); $i++)
if (trim(strtolower($delmail)) == trim(strtolower($maillist[$i]))) {
if (!$delmail == '')
{
print "<center>$delmail удален из базы рассылки</center>";
$flag = true;
}
}
else fputs($fw, $maillist[$i]); // введеного адреса в базе нет
fclose($fw);
if (!$delmail == '')
if (!$flag) print "<center>$delmail не найден в базе рассылки</center>";
?>
Вот наш код сохранения и удаления адресов готов. Теперь надо позаботится о средствах отправки почты. Не будем же мы через Аутлук отсылать ?. Как уже говорилось, защитим возможность отправки паролем, который будем вводить на специальной форме:
<input type="password" name="pass" value="">
<input type="submit" value="войти">
</form>
Поле для ввода с именем pass и будет служить для ввода пароля. После нажатия на кнопку с надписью войти, пароль будет передан скрипту out.php:
$subject = "Рассылка моего сайта"; // тема рассылки
$fromemail = "мое@мыло"; // ваш адрес (для ответов)
$file = "maillist.txt"; // список адресов подписчиков
$password = "secretpassword"; // ваш пароль для рассылки
if ($pass == $password) // если пароль ввели правильный
// то выводим форму с полями для ввода:
// адрес отправителя, текст письма, тело письма
// кнопку для отправления
// после нажатия на кнопку, передаем данные скрипту send.php
{
echo "<font size="-1"><hr><form method="POST" action="send.php">";
echo "адрес отправителя<br><input type="text" name="fromemail" value="$fromemail" size="25"><br>";
echo "тема письма<br><input type="text" name="subject" value="$subject" size="50">";
echo "<br>текст письма:<br><textarea name="body" rows="8" cols="50"></textarea>";
echo "<br><input type="submit" value="Отправить сообщение"></form></font>";
print "<i>В базе<b>". sizeof($maillist) ."</b> адресов</i><br><hr>";
for ($i = 0; $i < sizeof ($maillist); $i++) print $maillist[$i]. "<br>";
}
// если пароль неверный - просим ввести еще раз
else echo "<form method="POST" action="ras.php"><input type="password" name="pass" value=""><input type="submit" value="Управление"></form>";
?>
Осталось рассмотреть только один скрипт - тот самый, который будет отсылать почту:
$odr = " Для отказа от подписки воспользуйтесь ссылкой ";
$homepage = "http://адрес.сайта/ras.php";
error_reporting(0);
$subject = $HTTP_POST_VARS["subject"];
$body = $HTTP_POST_VARS["body"];
$subject = stripslashes($subject);
$body = stripslashes($body);
$file = "maillist.txt";
$maillist = file($file);
print "В базе". sizeof($maillist) ." адресов<br>";
for ($i = 0; $i < sizeof ($maillist); $i++)
{
#echo($maillist[$i]."<br>");
mail($maillist[$i], $subject,
$body ."$odr $homepag?delmail=$maillist[$i]",
"From: $fromemail");
}
echo "Готово!";
?>
Тут все просто: получаем значения, введенные в предыдущюю форму и в цыкле отправляем их по очереди на каждый из адресов.
Вот совсем и несложно! Теперь вы имеете мощный инструмент по ведению полностью собственой рассылки. Нет больше для вас никаких правил. Что хотите то и пишите в своей рассытке. Полная свобода по конфигурации и внешнему виду форм для подписки.
Разумеется, данный код является лишь минимальным набором. Например, с помощью функции mail можно организовать себе извещение о новом подписчеке, а подписчику о удачной регистрации, рассказать побольше о рассылке.
Разумеется, говоря о полной свободе, я не в коем случае не имел в виду принудительную подписку ? или, проще говоря, спам. Если вдруг кто решит рассылать спам таким образом, то пусть учтет что на него сразу начнут жаловатся администрации хостинга. И неважно платный хостинг или нет, если администрация хостинга заметит подобные действия, она анулирует предоставление своих услуг вам без возмещения убытков. А с халявными хостингами еще туже. Во-первых, надо просить персональное разрешения у администрации на открытие данной функции, во-вторых, как правило, стоит лимит в 1 письмо за минуту. Так что господа спамеры, обламайтесь :)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Другие новости по теме:
- PHP и формы
- Создание гостевой книги
- Голосование на PHP своими руками
- Отправка писем с вложениями на PHP
- Почтовые функции в РНР
- Бан по IP-адресу средствами PHP
- Пользовательские интерфейсы jQuery: tooltip – всплывающая подсказка.
- Постраничная навигация на PHP
- Простейшая авторизация для вашего сайта средствами HTTP
- Анализ посещаемости сайта рефералами
#1 написал: Julumaniya
19 марта 2012 11:52 | ICQ: -- |
Группа: Гости Регистрация: -- |
#2 написал: generic viagra
29 марта 2012 00:13 | ICQ: -- |
Группа: Гости Регистрация: -- |
http://www.cialis-without-prescription.us <a href="http://www.cialis-without-prescription.us">Cialis Without Prescription</a> asdasd Cialis Without Prescription asdasd http://www.viagrabuyonline.us <a href="http://www.viagrabuyonline.us">Buy viagra online</a> asdasd Buy viagra online asdasd http://www.viagra.gd <a href="http://www.viagra.gd">viagra</a> asdasd viagra asdasd http://www.cialis.vc <a href="http://www.cialis.vc">cialis</a> asdasd cialis asdasd http://www.buyonlineambien.com <a href="http://www.buyonlineambien.com">Buy ambien online</a> asdasd Buy ambien online asdasd http://www.viagra-cheap.us <a href="http://www.viagra-cheap.us">Cheap viagra</a> asdasd Cheap viagra asdasd 2 |
#3 написал: cialis
30 марта 2012 03:29 | ICQ: -- |
Группа: Гости Регистрация: -- |
http://www.cialisonline.biz <a href="http://www.cialisonline.biz"> Cialis online </a> Cialis online //** http://www.cialis.vc <a href="http://www.cialis.vc">cialis</a> && cialis ** |
#4 написал: cialis
31 марта 2012 20:24 | ICQ: -- |
Группа: Гости Регистрация: -- |
http://www.cialisonline.biz <a href="http://www.cialisonline.biz"> Cialis online </a> Cialis online //** http://www.generic-viagra.us <a href="http://www.generic-viagra.us">Generic viagra</a> & Generic viagra & |
#5 написал: jeatrisee
1 апреля 2012 23:39 | ICQ: -- |
Группа: Гости Регистрация: 1.04.2012 |
#6 написал: jeatrisee
2 апреля 2012 03:10 | ICQ: -- |
Группа: Гости Регистрация: 1.04.2012 |
#7 написал: Daxfaissera
2 апреля 2012 19:22 | ICQ: 154186735 |
Группа: Гости Регистрация: 1.03.2012 |
understanding your credit report credit suisse director hong kong. free money for home loans, payday loan instant cash. no credit card involved por consumer credit direct mail. blogcast credit on go daddy check credit reports free. payday car title loans. paday loans online in north carolina credit report. kroger rewards points credit card montana trans union credit reports. montelago student loans, find instant payday loans. bull-put credit spread lapeer county community credit unioni. credit card counseling service oklahoma city best credit card generator software. disney opening credits. credit card master 4, maine credit unions open to public. |
#8 написал: cialis
3 апреля 2012 01:28 | ICQ: -- |
Группа: Гости Регистрация: -- |
http://www.generic-viagra.us <a href="http://www.generic-viagra.us">Generic viagra</a> & Generic viagra & |
#9 написал: HuttBlalp
3 апреля 2012 19:34 | ICQ: -- |
Группа: Гости Регистрация: -- |
payday loans alcoholism new credit scoring. freeze on credit report, US Quick Cash Payday Loans. credit first future, citi credit card code. capcom credit union credit score of 578. rate card 0 credit transfer. louisiana judgments and credit reports texas veterans loans. |
#10 написал: HuttBlalp
4 апреля 2012 00:03 | ICQ: -- |
Группа: Гости Регистрация: -- |
consumer credit cousiling services best credit card deals travel. financing business using credit cards, Greatest Payday Loans. uk mortgages refinancing equity credit uk credit apply card online. credit union plainfield ct tempstar energy tax credits. transferring credit card borrowing. emery riddle credit for a p, bad business credit loan people small. |
#11 написал: cialis
5 апреля 2012 04:41 | ICQ: 1654653789 |
Группа: Гости Регистрация: 4.04.2012 |
http://www.viagra-cheap.us <a href="http://www.viagra-cheap.us">Cheap viagra</a> //* Cheap viagra %%% http://www.cialis.vc <a href="http://www.cialis.vc">cialis</a> && cialis ** |
#12 написал: cialis
7 апреля 2012 07:15 | ICQ: 1654653789 |
Группа: Гости Регистрация: 4.04.2012 |
http://www.onlinecialis.biz <a href="http://www.onlinecialis.biz"> Cialis online </a> ++ Cialis online & http://www.levitra.gd <a href="http://www.levitra.gd">levitra</a> && levitra ++ |
#13 написал: cialis
8 апреля 2012 04:51 | ICQ: 1654653789 |
Группа: Гости Регистрация: 4.04.2012 |
http://www.viagra-cheap.us <a href="http://www.viagra-cheap.us">Cheap viagra</a> //* Cheap viagra %%% |
#14 написал: cialis
9 апреля 2012 14:07 | ICQ: 1654653789 |
Группа: Гости Регистрация: 4.04.2012 |
#15 написал: worldoftanki
11 апреля 2012 18:34 | ICQ: 316142827 |
Группа: Гости Регистрация: 9.04.2012 |
Хорошо! Все бы так писали :) <a href=http://www.worldoftanki.ru/2012/04/page/18>Заставка 158 Заставка 126</a> <a href=http://www.worldoftanki.ru/attachments/article/3014/3014_fonts.rar>Заста вка от alekslain Заставка 98</a> Какой догадливый! скривился Серб. Пошли в штаб, нас ждут. Струсил, кивнул Вася. Я так и знал. Пусть сказки про «My Little Pony» для маленьких девочек пишет, а нас оставит в покое! Эдак завтра насочиняет что-нибудь про драконов в «World of Warplanes», а нам потом разгребай! |
#16 написал: worldoftanki
12 апреля 2012 09:09 | ICQ: 316142827 |
Группа: Гости Регистрация: 9.04.2012 |
Елки-палки, уникальная заметка <a href=http://www.worldoftanki.ru/attachments/article/3014/3014_crosshair_panel_sn iper.zip>Заставка от Deasoul 4 Заставка от P_o_g_S</a> <a href=http://www.worldoftanki.ru/angary/kitajskij-novogodnij-angar.html>Застав ка 116 Последнее письмо…</a> Радует только одно: некоторым товарищам эмпирическим путем (путём копания в файлах игры) удалось выяснить эти цифры. На второй этаж, можно по лестнице, можно на лифте, сделал охранник, выдав гостю электронный пропуск. Там направо, кабинет найдете... Елки-палки, уникальная заметка <a href=http://www.worldoftanki.ru/attachments/article/3014/3014_crosshair_panel_sn iper.zip>Заставка от Deasoul 4 Заставка от P_o_g_S</a> <a href=http://www.worldoftanki.ru/angary/kitajskij-novogodnij-angar.html>Застав ка 116 Последнее письмо…</a> Радует только одно: некоторым товарищам эмпирическим путем (путём копания в файлах игры) удалось выяснить эти цифры. На второй этаж, можно по лестнице, можно на лифте, сделал охранник, выдав гостю электронный пропуск. Там направо, кабинет найдете... |
#17 написал: cialis
20 апреля 2012 21:51 | ICQ: 1654653789 |
Группа: Гости Регистрация: 4.04.2012 |
http://www.viagra.gd <a href="http://www.viagra.gd">viagra</a> & viagra & http://www.cialis.gd <a href="http://www.cialis.gd">cialis</a> & cialis (()) |
#18 написал: Nidocootbilla
10 мая 2012 00:00 | ICQ: -- |
Группа: Гости Регистрация: 9.05.2012 |
заказать осетинские футболки заказать футболку с надписью цао. где купить футболку с надписью Ronaldo, майки с логотипом. metallica майки где в питере купить футболку пиратской станции. заказать футболку как у armina, заказ футболок москва. где купить майку сборной россии по хоккею. dnb майки купить футболки disciples 3. ак 47 футболки заказ хоккейных футболок с надписью. интеренет магазин футболок, майки футболки. купить футболки wwf в москве Где можно купить футболки. купить майку британский флаг купить рэперские футболки. armin only футболка. купить крутую футболку кислотные футболки уфа. |
#19 написал: jeatrisee
10 мая 2012 19:24 | ICQ: -- |
Группа: Гости Регистрация: 1.04.2012 |
#20 написал: GekCreertyWak
12 мая 2012 02:40 | ICQ: -- |
Группа: Гости Регистрация: 11.05.2012 |
new car insurance coverage, home insurance contents. home auto insurance quotes, check Internet insurance company in Azusa. florida car insurance rate car insurance compare prices. car import insurance motorcycle insurance california. homeowner insurance online. student car insurance quotes, general auto insurance. homesite homeowners insurance renters home insurance. motorcycle insurance best rates, low cost auto insurance california. car insurance chicago il new drivers insurance. cheap motorcycle insurance in california buy auto insurance online instantly. california state auto insurance. how much does rental car insurance cost get insurance quote. |


