Есть много сообщений разработчиков РНР о том, что функция mail() в некоторых случаях не работает с MS Exchange Server. В Exchange Server 5,5 есть много ошибок, относящихся к электронной почте, из-за которых mail () и функции IMAP работают неправильно. Постарайтесь установить самый свежий пакет обновления для своего сервера.
В качестве альтернативы можно воспользоваться классом SMTP, который мы построим в этой главе, чтобы непосредственно доставлять сообщения в Exchange Server.
Exchange Server 5.5 и выше содержит встроенную поддержку ШАР. Необходимо перейти на эту поддержку ШАР, прежде чем пробовать соединяться с Exchange Server с использованием функций РНР для ШАР. Включить доступ к серверу по ШАР можно, щелкнув по флажку Enable Protocol в разделе IMAP4 Protocol. Сбросьте флажок Enable Fast Message Retrieval, если в ваших почтовых сообщениях отсутствуют вложения.
Наконец, для сценариев РНР устанавливается по умолчанию тайм-аут в 30 секунд. Если функция таЩ) применяется для отправки сотен почтовых сообщений, необходимо увеличить этот предел:
set_time_limit(3600);
Приведенный вызов функции устанавливает тайм-аут, равный 1 часу.
Будет ошибкой отправлять за один прием много почтовых сообщений с по мощью РНР. Это может привести к тому, что почтовый сервер заберет все
ресурсы своего хоста. Если требуется за короткий период передать сотни или даже тысячи почтовых сообщений, следует воспользоваться каким-нибудь из администраторов почтовых списков, специально предназначенных для таких целей.
Посмотрим на mail() в действии. Следующий сценарий отправляет сообщение электронной почты для wankyu@whatever. com, устанавливая некоторые дополнительные поля заголовка. Обратите особое внимание на то, как строятся поля заголовка:
<?php
• = "mailto:someone@a.com">someone@a.com"; $mail_from = "mailto:spammer@b.com">spammer@b.com"; $mail„reply_to = "mailto:spammer2@b.com">spammer2@b.com"; $mail_cc = "someoneelse@a.com,mailto:yetanotherone@a.com">yetanotherone@a.com"; $mail„bcc =
$mail_headers =. "From: $mail_from\r\nReply-to:
$mail_reply_to\r\nCc:$mail_cc\r\nBcc: $mail_bcc";
$mail_subject = "I know a secret to your success!"; $mail_body = "Mail me back right now!";
if (mail($mail_to, $mail_subject, $mail_body, $mail_headers)) { echo( "Successfully sent an email titled '$mail_subject'! ");
} else
echo("An error occurred while attempting to send an email titled '$mail_subject'!");