Записи с меткой «отправка писем из PHP»

Рассылка

Как-то мне пришлось сделать рассылку всем кто учился в Павлодарском государственном университете. Мне нужно было это для того чтобы выпускники поздравили с 50-летним юбилеем ПГУ

Что же я сделал для этого?

Мне понадобилось собрать список емайлов всех кто учился в ПГУ. Как же это сделать? Первое что пришло в голову это распарсить социальную сеть «Мой Мир».

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

<?php
error_reporting(0);
set_time_limit(0);

$page = (int)file_get_contents('page');
$mails = array();
foreach  (file('mails') as $g) {
    $mails[] = trim($g);
}
for ($i = $page;  $i <= 844; $i++) {
    file_put_contents('page', $i);
    print 'page ' . $i . "\n";
    flush();
    $c =  file_get_contents('http://my.mail.ru/my/classmates?type_id=4&institute_id=263054&page='  . $i);
    preg_match_all('#http://www\.mail\.ru/agent\?message&to=([a-z0-9_\-\.]+@[a-z]+.ru)#si',  $c, $matches, PREG_SET_ORDER);
    foreach ($matches as $n => $m) {
        if (in_array($m[1], $mails)) continue;
        print '  ' .  $m[1] . "\n";
        flush();
        $mails[] = $m[1];
        file_put_contents('mails', $m[1] . "\n", FILE_APPEND);
    }
}

?>

После парсинга количество емайлов отличалось от реального на 300. Сначала подумал что это моя ошибка. Оказалось это сам майл.ру глючный. Эти емайлы не попали в мой список потому, что в конце некоторых страниц отсутствовал один.(например http://my.mail.ru/my/classmates?type_id=4&institute_id=263054&page=3)

Ну я не расстроился 16 тыс емайлов вполне хватило)
Приступим к рассылке писем:

<?php
error_reporting(0);
set_time_limit(0);

$page = (int)file_get_contents('page');
$mails = array();
foreach (file('mails') as $g) {
    $mails[] = trim($g);
}
foreach($mails AS $m) {
    emailSend($m, 'ПГУ им.С.Торайгырова 50 лет!', 'Событие: ПГУ им.С.Торайгырова 50 лет!
Поздравьте свой университет с юбилеем!
ПГУ будет рад получить от Вас поздравления!
http://psu.kz/index.php?option=com_compliment&act=view

Не забудьте передать ссылку своим друзьям!!! ОБЯЗАТЕЛЬНО
');
    sleep(1);
}

function emailSend($address, $subj, $body)
{
    $address = strtolower($address);
    $from = '[email protected]';
    $from_name = 'ПГУ им.С.Торайгырова';

    $body = "$body\n\n--\nПожалуйста не отвечайте на это письмо. Оно было сгенерировано исключительно с целью проинформировать Вас.";
    // =?кодировка?способ кодирования?закодированный текст?=
    $from_name = base64_encode($from_name);
    $subj = base64_encode($subj);
    $subj = "=?UTF-8?B?$subj?=";
    $body = base64_encode($body);

    $headers = "From: =?UTF-8?B?$from_name?= <$from>\r\n"
     . "Return-path: <$from>\r\n"
     . "Content-Type: text/plain; charset=UTF-8\r\n"
     . "Content-Transfer-Encoding: base64";

    mail($address, $subj, $body, $headers);
}

?>

Я на всякий случай поставил задержку в 1 сек между рассылками писем. На рассылку ушло где-то полдня. В течении рассылки поздравило около 20 человек!
Делайте выводы.

QR-ссылка
QR Code for   отправка писем из PHP
Показуха

TwitterCounter for @LEXASOFT

Рейтинг блогов

Яндекс.Метрика