Аргерих Л. О языке РНР. Часть 2. Страница 109


Есть много сообщений разработчиков РНР о том, что функция 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'!");




Если вы хотите подключить себе качественный, быстрый и доступный беспроводный интернет в Москве, обратитесь в компанию стрим. Мы предлагаем своим клиентам выгодные условия подключения и выгодные тарифы. Более детальная информация у нас на сайте.