Своя розсилка на php - як створити

Так чому б не написати простенький движок для своєї розсилки і відсилати листи своїми силами?

Давайте розберемося, що нам для цього буде потрібно.

Ось власне майже і все.

Залишилося додати тільки можливість відправки листів. Для безпеки, давайте на можливість відправки листів поставимо пароль - необхідна форма для введення пароля.

Ну і, нарешті, сам скрипт. який буде відсилати листи.

А тепер все по порядку.

error_reporting (0); // забороняємо висновок повідомлень про можливі помилки

$ Flag = false;
if (eregi ( "^ [_ \. 0-9a-z -] + @ ([0-9a-z] [- 0-9a-z \.] +) \. ([az] $)", $ char)) $ flag = true;
if ($ flag) return true;
else return false;
>

Як вже говорилося, захистимо можливість відправки паролем, який будемо вводити на спеціальній формі:




Поле для введення з ім'ям pass і буде служити для введення пароля. Після натискання на кнопку з написом увійти, пароль буде переданий скрипту out.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);

Ось зовсім і нескладно! Тепер ви маєте потужний інструмент з ведення повністю власної розсилки. Немає більше для вас ніяких правил. Що хочете то і пишіть в своїй розсилці. Повна свобода по конфігурації і зовнішнім виглядом форм для підписки.

Ясна річ, цей код є лише мінімальним набором. Наприклад, за допомогою функції mail можна організувати собі повідомлення про новий передплатника, а передплатнику про вдалою реєстрації, розповісти побільше про розсилку.

На такий ось веселій ноті і закінчимо.

Отже, зі статті Ви вже дізналися не тільки як можна відправляти листи за допомогою PHP, але і як організувати просту розсилку своїми силами.

З моменту виходу статті, я отримав чимало відгуків і питань. В основному людей цікавило чи можна за допомогою PHP відправляти листи з атачмент (вкладеннями).

class mime_mail var $ parts;
var $ to;
var $ from;
var $ headers;
var $ subject;
var $ body;

// створюємо клас
function mime_mail () $ this-> parts = array ();
$ This-> to = "";
$ This-> from = "";
$ This-> subject = "";
$ This-> body = "";
$ This-> headers = "";
>

// якраз сама функція додавання файлів в мило
function add_attachment ($ message, $ name = "", $ ctype = "application / octet-stream") $ this-> parts [] = array (
"Ctype" => $ ctype,
"Message" => $ message,
"Encode" => $ encode,
"Name" => $ name
);
>

// Побудова повідомлення (multipart)
function build_message ($ part) $ message = $ part [ "message"];
$ Message = chunk_split (base64_encode ($ message));
$ Encoding = "base64";
return "Content-Type:". $ part [ "ctype"]. ($ part [ "name"]? "; name =" ". $ part [" name "]." "". ""). "\ nContent-Transfer-Encoding: $ encoding \ n \ n $ message \ n ";
>

function build_multipart () $ boundary = "b" .md5 (uniqid (time ()));
$ Multipart = "Content-Type: multipart / mixed; boundary = $ boundary \ n \ nThis is a MIME encoded message. \ N \ n - $ boundary";
for ($ i = sizeof ($ this-> parts) -1; $ i> = 0; $ i--) $ multipart. = "\ n". $ this-> build_message ($ this-> parts [$ i ]). "- $ boundary";
return $ multipart. = "- \ n";
>

// Посилка повідомлення, остання викликається, класу
function send () $ mime = "";
if (! empty ($ this-> from)) $ mime. = "From:". $ this-> from. "\ n";
if (! empty ($ this-> headers)) $ mime. = $ this-> headers. "\ N";
if (! empty ($ this-> body)) $ this-> add_attachment ($ this-> body, "", "text / plain");
$ Mime. = "MIME-Version: 1.0 \ n". $ This-> build_multipart ();
mail ($ this-> to, $ this-> subject, "", $ mime);
>
>

Ось і все, привожу приклад використання класу:

Третій параметр в add_attachment передає заголовок типу файлу, наприклад, для картинки буде "image / jpeg"

Ось, власне і все, як бачите, нічого складного. Будуть питання - задавайте.

Схожі статті