Отправка писем с сайта. Рассылка писем по E-mail-адресам из файла

Опубликовал: Пятница, Март 30, 2012 в категории HTML | Пока нет комментариев

Отправить письма с сайта позволяет функция mail(). Функция имеет сле-

дующий формат:

mail(<E-mail получателя>, <Тема>, <Сообщение>, [<Заголовки>]);

Функция возвращает true, если письмо отправлено. Если PHP работает в ре- жиме Safe Mode, то функция mail() всегда возвращает false, даже если письмо отправлено.

В параметре <Заголовки> обычно указываются следующие заголовки:

? From — имя и обратный адрес отправителя:

From: Nik <[email protected]>

? Content-Type — MIME-тип и кодовая таблица:

Content-Type: text/html; charset=windows-1251

Заголовки должны быть разделены комбинацией символов \r\n. Если в тек- сте заголовков присутствуют русские буквы, то текст следует зашифровать с помощью метода base64 следующим образом:

=?<Кодировка>?B?<Зашифрованный текст>?=

Зашифровать текст с помощью метода base64 позволяет функция

base64_encode().

$tema = "Сообщение";

$tema = "=?windows-1251?B?" . base64_encode($tema) . "?=";

Зашифровать текст в кодировке UTF-8 позволяет функция

mb_encode_mimeheader(). Функция имеет следующий формат:

mb_encode_mimeheader(<Строка>, [<Кодировка>], [<Метод кодирования>], [<Символ переноса строк>]);

Если параметр <Кодировка> не указан, то используется значение, указанное в функции mb_internal_encoding(). Как показывает практика, указывать ко- дировку в функции mb_internal_encoding() нужно обязательно. Параметр

<Метод кодирования> может принимать значения "B" (Base64) или "Q" (Quoted-Printable). Если параметр не указан, то используется значение "B". Параметр <Символ переноса строк> задает символ для разделения строк. По умолчанию предполагается комбинация "\r\n". Пример:

mb_internal_encoding(‘UTF-8′);

$tema = ‘Сообщение’;

echo mb_encode_mimeheader($tema);

// Выведет: =?UTF-8?B?0KHQvtC+0LHRidC10L3QuNC1?=

Текст сообщения шифровать необязательно. А вот кодовую таблицу симво- лов следует указать в заголовке Content-Type. Также следует учитывать, что длина одной строки не должна превышать 70 символов. Строки отделяются друг от друга символом перевода строки (\n).

Любое письмо может быть отправлено в виде обычного текста (лис- тинг 5.57), а также в формате HTML (листинг 5.58). В первом случае указы- вается MIME-тип text/plain, а во втором — text/html.

В качестве примера отправим письмо с подтверждением регистрации.

Листинг 5.57. Пример отправки письма в виде обычного текста

<?php

$msg = "Добрый день!\n\n";

$msg .= "Вы успешно зарегистрированы.\n\n";

$msg .= "http://www.site.ru/\n";

$msg .= "[email protected]";

$Ot = "Суппорт";

$Ot = "=?windows-1251?B?" . base64_encode($Ot) . "?=";

$header = "Content-Type: text/plain; charset=windows-1251\r\n";

$header .= "From: " . $Ot . " <[email protected]>";

$tema = "Сообщение";

$tema = "=?windows-1251?B?" . base64_encode($tema) . "?=";

mail("[email protected]", $tema, $msg, $header);

?>

Отправленное письмо (с заголовками) будет выглядеть следующим образом:

To: [email protected]

Subject: =?windows-1251?B?0e7u4fnl7ejl?= Content-Type: text/plain; charset=windows-1251

From: =?windows-1251?B?0fPv7+7w8g==?= <[email protected]>

Добрый день!

Вы успешно зарегистрированы. http://www.site.ru/

[email protected]

Листинг 5.58. Пример отправки письма в формате HTML

<?php

$msg = "Добрый день!<br><br>\n";

$msg .= "Вы успешно зарегистрированы.<br><br>\n";

$msg .= "<a href=\"http://www.site.ru/\">http://www.site.ru/</a><br>\n";

$msg .= "[email protected]";

$Ot = "Суппорт";

$Ot = "=?windows-1251?B?" . base64_encode($Ot) . "?=";

$header = "Content-Type: text/html; charset=windows-1251\r\n";

$header .= "From: " . $Ot . " <[email protected]>";

$tema = "Сообщение";

$tema = "=?windows-1251?B?" . base64_encode($tema) . "?=";

mail("[email protected]", $tema, $msg, $header);

?>

При изучении работы с файлами мы создали файл file.txt со списком рассыл- ки и механизм работы с ним (см. разд. 5.25.4). Теперь рассмотрим возмож- ность рассылки писем по E-mail-адресам из этого файла (листинг 5.59).

Листинг 5.59. Рассылка писем

<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">

<input type="hidden" name="send" value="1">

<input type="submit" value="Разослать">

</form>

<?php

if (isset($_GET["send"])) {

$email = file(‘file.txt’) or die(‘Файл не найден’);

$msg = "Добрый день!\n\n";

$msg .= "Новости нашего сайта.\n\n";

$msg .= "http://www.site.ru/\n";

$msg .= "[email protected]";

$header = "Content-Type: text/plain; charset=windows-1251\r\n";

$header.="From: news <[email protected]>";

$tema = "Новости сайта";

$tema = "=?windows-1251?B?" . base64_encode($tema) . "?=";

for ($i=0, $c=count($email); $i<$c; $i++) {

$email[$i] = trim($email[$i]);

if (preg_match(‘/^([a-z0-9_.-]+)@([a-z0-9-]+\.)+[a-z]{2,6}$/is’,

$email[$i])) {

@mail($email[$i], $tema, $msg, $header);

}

}

echo "Сообщения разосланы";

}

?>

При нажатии кнопки Разослать на все E-mail из файла будет отправлено письмо.

Обратите внимание, на локальной машине письма отправлены не будут, так как мы не устанавливали программу отправки писем — sendmail. На серве- ре хостинг-провайдера данная программа практически всегда установлена и настроена. Правда, количество одновременно отправленных писем часто ог- раничено.

При рассылке в письме обязательно должна быть предусмотрена возмож- ность отписаться от рассылки. И запомните — рассылка спама в Интернете запрещена. Под спамом понимаются письма, не запрошенные явным образом получателем.

Источник: Прохоренок Н. А. HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. — 3-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2010. — 912 с.: ил. + Видеокурс (на CD-ROM) — (Профессиональное программирование)

Add to Social Bookmarks
  • del.ici.ous
  • Digg
  • Furl
  • Google
  • Simpy
  • Spurl
  • Y! MyWeb
  • BobrDobr
  • Mr. Wong
  • Yandex.Bookmarks
  • Text 2.0
  • News2
  • AddScoop
  • RuSpace
  • RUmarkz
  • Memori
  • Google Bookmarks
  • Pisali
  • SMI 2
  • Moe Mesto
  • 100 Zakladok
  • Vaau!
  • Technorati
  • RuCity
  • LinkStore
  • NewsLand
  • Lopas
  • Закладки - I.UA
  • Connotea
  • Bibsonomy
  • Trucking Bookmarks
  • Communizm
  • UCA

Похожие посты:

Комментировать

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>