если не поставить после тэга ?> какой-нибудь знак. Вообще-то, лучше здесь использовать пробел, но в листинге он был бы совершенно незаметен, — вот почему я и выбрал точку.
r Наконец, чтобы каждая строка новостей, которые получит пользователь, была не длиннее 60 символов, мы задействуем встроенную в PHP функцию WordWrap(). Подробнее о ней можно прочитать в главе 12
настоящей книги.
В листинге 32.4 приведен код, который, собственно, и занимается рассылкой писем.
Листинг 32.4. Код рассылки писем
<?
// Подключаем библиотекаря "прямым" способом.
include "$DOCUMENT_ROOT/php/Librarian.phl";
// Подключаем модуль с функцией PostMail()
Uses("Mail");
// . . .
// Здесь мы должны генерировать массив $News,
// содержащий блоки последних новостей.
// . . .
// Открываем базу данных с подписчиками. Ее формат был
// рассмотрен нами ранее.
$F=File("db.txt");
foreach($F as $s) {
$User=explode("|",trim($s));
// Для удобства создаем для каждого значения ключи.
$User=array(
"name" => $User[0],
"email" => $User[1],
"time" => $User[2],
"encode" => $User[3]
);
// Посылаем письмо по шаблону из файла mail.txt
// очередному пользователю, переводя его в желаемую кодировку.
PostMail($User['email'],"file:mail.txt",$User['encode']);
}
?>
Этот код довольно красноречиво показывает, что работать с нашей новой функцией PostMail() очень просто. Большая его часть занимается не отправкой писем, а разбором записей в базе данных. Так как переменные $User и $News — глобальные, то не нужно предпринимать никаких дополнительных действий, чтобы использовать их в шаблоне письма.
На этом мы завершим рассмотрение возможностей PHP по отправке электронной почты и разбору шаблонов писем. Я не затронул здесь тему, касающуюся включения в письма так называемых attachment'ов (или "вложенных файлов"), потому что в формате писем, содержащих "вложения", довольно легко запутаться. Любознательный читатель всегда сможет добавить в модуль Mail.phl функции, позволяющие удобно работать с "вложениями". Для того чтобы разобраться с форматом таких писем, можно даже не искать соответствующую документацию: достаточно просто посмотреть на исходный текст письма, сгенерированного какой-нибудь почтовой программой, и уловить закономерности размещения заголовков и блоков текста.