Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
email рассылка по шаблону на PHP
Если Вы не хотите платить различным сервисам, типа UniSender за рассылку писем и у вас есть свой сайт на более-менее приличном хостинге вы можете сделать свою собственную рассылку на e-mail.
Для органиации своей e-mail рассылки нужна "база рассылки" и "программа рассылки". В качестве программы проще и удобнее использовать PHP скрипт. А базу нужно собирать из своих клиентов. Я категорически не рекомендую покупать базу для e-mail рассылок, т.к. вы очень быстро попадете в спам-лист и даже нормальные ваши клиенты не будут получать от вас писем.
Здесь я расписал рекомендации как делать рассылки, на что обращать внимание при составлении писем. Если у вас есть своя старая база и вы хотите ее актуализировать, т.е. оставить только "живых" пользователей, используйте сервис проверки e-mail
Данный пример создания своей рассылки на PHP уникален тем, что он без использования базы данных и каких-либо дополнительных библиотек. Вы один раз создаете свой красивый html-шаблон, на основании предложенного, загружаете из текстового файла или с помощью вставки в поле список адресов получателей, нажимаете "отправить" и вуаля! Все получили ваше письмо! Для того, чтобы избежать проблемы дешевых хостингов, которые ограничивают отправку большого кол-ва писем в минуту в скрипте предусмотрен параметр "LIMIT_PER_MINUTES=20", т.е. скрипт будет отправлять не более 20 писем в минуту. Вы можете менять его в зависимости от ограничений вашего хостинга.
Основные возможности скрипта
- Не используется база данных
- Используется шаблон письма, вставляются {body} = тело письма, {to} = ФИО получателя, {unsubscribe} = ссылка отписки
- Встроенный парсер данных для получения списка рассылки
- Кодируется кирилица в заголовке и в именах отправитея/получателя
- Добавляется адрес для ответа.
- Прописываются корректные заголовки письма для снижения риска попадания в спам.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Отправить почтовое сообщение</title>
</head>
<body>
<h1>Отправить почтовое сообщение</h1>
<?
if(!empty($_FILES['file']['tmp_name'])){
$fil=$_FILES['file']['tmp_name'];
$to = file_get_contents($fil); if($to===false)echo '<br>Файл со списком получателей '.$fil.' не открывается, возможно неверный формат!';
//if(!empty($_POST['fcharset'])&&$_POST['fcharset']=='windows-1251')$mes=Convert::win2utf($mes);
}elseif(!empty($_POST['to'])){
$to = $_POST['to'];
}
define('HASH_UNSUBSCRIBE','ootHK8EE58Ni/&E$HkcR');
define('LIMIT_PER_MINUTES',20);
if(!defined('charset'))define('charset','utf-8');
$SERVER_NAME=preg_replace('/^https?:\/\//', '', str_replace(':443', '', $_SERVER['HTTP_HOST']));
$mes = isset($_POST['mes'])? $_POST['mes'] : '' ;
$subj = isset($_POST['subj']) ? $_POST['subj'] : '';
$from_name = isset($_POST['from_name']) ? $_POST['from_name'] : '';
$from_mail = isset($_POST['from']) ? $_POST['from'] : 'sales@' /*'noreply@'*/ . $SERVER_NAME;
$add_name = !empty($_POST['add_name']);
$f=__FILE__; $f=substr($f,0,-3).'html';
if (is_file($f))$f_body = file_get_contents($f);
if(!empty($to)){
set_time_limit(1000);
if (empty($mes)){
echo "<p>Пустое сообщение, будет отправлен сам шаблон!</p>";
}
ignore_user_abort(true);
set_time_limit(1000);
if (!empty($_POST['from'])) $GLOBALS['from'] = $_POST['from'];
if (!empty($f_body)){
$body = str_ireplace("{body}", str_replace("\n", "\n", str_replace("\r", "", $mes)), $f_body);
} else {
echo "<p>Нет файла шаблона письма!</p>";
if(stripos($mes, '<html>')===false){
$mes = "<html><head><meta content=\"text/html; charset=".charset."\" http-equiv=\"Content-Type\"></head><body>\n" .
$mes . "\n</body></html>";
}
$body = str_replace("\n", "<br>\n", str_replace("\r", "", $mes)); // сообщение всем
}
$subject = mime_header_encode($subj, charset);
$to = preg_replace('/[ \t\r]+/', ' ', trim($to));
$to = preg_replace('/ +/', ' ', $to);
$ss = explode("\n", $to);
$ret = 0; // счетчик отправленых писем
foreach ($ss as $name)if($name){
// цикл разбора получателей и отправки e-mail им
// --------- здесть отсутствует часть скрипта ----------
// формирую адрес отписку, подставляю все в шаблон
// --------- здесть отсутствует часть скрипта ----------
if( mail( $to, $subject, $body, $header) ){
echo "Отправлено на <b>" . $to_name .' <' . $to_mail . '>'. "</b><br>\n";
$ret++;
}
if(defined('LIMIT_PER_MINUTES') && 60>LIMIT_PER_MINUTES )sleep(60/LIMIT_PER_MINUTES);
}
echo "Отправлено <b>" . $ret . "</b> сообщений!<br>\n";
}
?>
<form class="box" enctype="multipart/form-data" method="post" action="">
<label>
Получатели(email и имена получателей по одному в строке):<br>
<textarea name="to" rows="10" style="width:100%"><?=(empty($_POST['to'])?'':$_POST['to'])?></textarea></label><br>
<label>или файл с получателями: <input type="file" accept="application/*, text/*" name="file"></label><br>
<br><label><input name="add_name" value="1" type="checkbox" checked> добавлять имена в поле получателя</label><br>
<br><label>Отправитель имя: <input name="from_name" value="<?=$from_name?>"></label>
<label>e-mail: <input type="email" name="from_mail" value="<?=$from_mail?>"></label><br>
<br><label>Тема: <input type="text" name="subj" style="width:100%" value="<?=$subj?>" required></label><br>
<?if(empty($f_body) || stripos( $f_body, "{body}")!==false ){?>
<label>Сообщение<?=(is_file($f)?' (для вставки в <a href="'.substr($f,strlen($_SERVER['DOCUMENT_ROOT'])).'">шаблон</a>)' :
'(шаблона письма нет)')?>: <br>
<textarea name="mes" rows="10" style="width:100%"><?=@$mes?></textarea></label><br>
<p>Для подстановки в шаблоне используйте: {to} = ФИО получателя, {body} = тело письма, {unsubscribe} = ссылка отписки</p>
<?}elseif(!empty($f_body)){?>
<p><a href="<?=substr($f,strlen($_SERVER['DOCUMENT_ROOT']))?>">Шаблон отправляемого письма</a> не содержит изменяемой части {body}.</p>
<?}?>
<input type="submit" value="Отправить" class="submitR" ><br>
</form><br>
</body>
</html>
Пример простейшего шаблона письма
Данный пример шаблона письма e-mail рассылки основан на табличной верстке, которую понимают все почтовые клиенты. Шаблон имеет ограниченную ширину в 600 пикселей чтобы помещаться в окно предварительного просмотра.
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<style type="text/css">
a{color:#0077cc;}
ul{padding:0;font:14px Arial;margin-top:0;text-align:justify;}
p{margin:10px 0;text-indent:20px;font:14px Arial;text-align:justify;}
</style>
</head>
<body>
<table cellpadding='0' cellspacing='0' style='width:100%;' width='100%'>
<tbody>
<tr>
<td align='center' style='padding:0 0 0 0' valign='top'>
<table cellpadding='0' cellspacing='0' style='width:600px;border:solid 1px #3399cc;border-spacing:0' width='600px'>
<tr><td style="background:#33ccff;padding:9px 20px;border:solid 1px #3399cc;">
<h1 style="margin:0;font:25px Arial;color:#ffffff;">WEB-технологии</h1>
</td></tr>
<tr><td style="background:#fff;padding:9px 20px;color:#333;font:14px Arial;border:solid 1px #3399cc;">
{body}
<p style="text-align:center;font-size:50%">
<a href="{unsubscribe}">Отписаться от рассылки</a>
</p>
</td></tr>
</table>
</td>
</tr>
</table>
</body>
</html>
Всего за 850 рублей (~14$) Вы можете приобрести готовый скрипт рассылки, который поддерживает весь функционал. Код скрипта реализован на PHP, полностью открытый и не использует никаких дополнительных библиотек.
- Соглашение по использованию платной версии:
- Вы можете использовать полученный код в любых своих разработках, вы не обязаны указывать ссылку на источник.
- Вы НЕ имеете права перепродавать её, размещать в свободном или ограниченном доступе, а также публиковать в любом виде.
- Все остальные права сохраняются за автором.
Регистрация Войти Войти через VK Войти через FB Войти через Google Войти через Яндекс