Отправка почты в кодировке MIME

Задача
Необходимо послать сообщение по электронной почте в кодировке MIME. Например, нужно отправить несколько сообщений, содержащих разделы с простым текстом и в формате HTML, и заставить программу чтения почты, понимающую MIME-кодировку, автоматически отображать соответствующий раздел.

Решение
Это делается с помощью PEAR-класса Mail_mime:

require 'Mail.php';
require 'Mail/mime.php';
$to = 'adam@example.com, sklar@example.com';
$headers['From'] = 'webmaster@example.com';
$headers['Subject'] = 'New Version of PHP Released!';
// создаем MIME-объект
$mime = new Mail_mime;
// добавляем разделы тела сообщения
$text = 'Text version of email';
$mime->setTXTBody($text);
$html = 'HTML version of email';
$mime->setHTMLBody($html);
$file = '/path/to/file.png';
$mime->addAttachment($file, 'image/png');// выбираем MIME-кодированные заголовки и тело сообщения
$headers = $mime->headers($headers);
$body = $mime->get();
$message =& Mail::factory('mail');
$message->send($to, $headers, $body);

Обсуждение
PEAR-класс Mail_mime предоставляет объектно-ориентированный интерфейс, реализующий внутри себя все элементы, вовлеченные в создание почтового сообщения, которое содержит и текстовые разделы, и разделы в формате HTML.


Этот класс напоминает PEAR-класс Mail, но в нем тело не определяется как строка текста, а создается объект Mail_mime и вызываются его методы, чтобы добавить необходимые разделы к телу сообщения:

// создаем объект MIME
$mime = new Mail_mime;
// добавляем разделы тела сообщения
$text = 'Text version of email';
$mime->setTXTBody($text);
$html = 'HTML version of email';
$mime->setHTMLBody($html);
$file = '/path/to/file.txt';
$mime->addAttachment($file, 'text/plain');
// выбираем MIME-кодированные заголовки и тело сообщения
$headers = $mime->headers($headers);
$body = $mime->get();

Методы Mail_mime::setTXTBody() и Mail_mime::setHTMLBody() добавляют разделы тела сообщения в формате простого текста и в формате HTML соответственно. Здесь мы передаем переменные, но можно также передать имя файла объекту Mail_mime, чтобы он его прочитал. Для использования этой возможности передайте значение true в качестве второго параметра:

$text = '/path/to/email.txt';
$mime->setTXTBody($text, true);

Чтобы присоединить к сообщению вложение, например графику или архив, вызовите функцию Mail_mime:: addAttachment():

$file = '/path/to/file.png';
$mime->addAttachment($file,'image/png');

Передайте функции путь к файлу и его MIME-тип.

Составив сообщение, делаем последние приготовления и посылаем его:

// выбираем MIME-кодированные заголовки и тело сообщения
$headers = $mime->headers($headers);
$body = $mime->get();
$message =& Mail::factory('mail');
$message->send($to, $headers, $body);

Сначала вам надо заставить объект Mail_mime обеспечить правильно отформатированные заголовки и тело сообщения.


Затем используется родительский класс Mail для форматирования сообщения и отправки его с помощью функции Mail_mime::send().

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела PHP на эту тему:
Отправка почты
Отправка сообщений в новостные группы Usenet
Поиск адресов с помощью LDAP
Поиск в DNS
Получение и размещение файлов с помощью FTP

Вернуться в раздел: PHP / 17. Интернет-службы