Для начала, необходимо установить почтовый сервер и настроить почтовый клиент.
Для настройки почтового сервера, необходимо:
1) войти в папку «Почтовый сервер»;
2) запустить файл “CourierMS.exe”;
3) посмотреть во вкладке «Журнал» сообщения и убедиться, что серверы SMTP и POP3 запущены без ошибок;
4) открываем файл «cms_ru.chm» и следуем инструкции, которая указана во вкладке «Начало работы». Эта инструкция практически повторяет, то, что здесь уже написано, поэтому проверьте еще раз, все ли ты сделали;
5) во вкладке «Домены» необходимо переименовать основной домен (например, laba);
6) во вкладке «Пользователи» необходимо добавить нового пользователя – ввести имя и пароль латиницей (например, lily, пароль 1);
7) сворачиваем окно сервера (не закрываем!!!);
Для настройки клиентского сервера необходимо:
1) открыть Microsoft Outlook, либо любой другой почтовый клиент;
2) в главном меню выбрать Сервис -> Учетные записи -> Добавить -> Почта, выводимое имя – любое, далее адрес электронной почты будет состоять из имени пользователя@имени домена (т.е. lily@laba); далее – сервер входящих сообщений localhost, сервер SMTP – localhost; далее – пароль такой же, как и указано при настройке сервера (у нас, 1), готово;
3) пробуем написать письмо самому себе при помощи программы Outlook Express. Для этого: Создать -> Кому: lily@laba, тема и сообщение – любые; при отправке сообщения и нажатии клавиши Доставить, письмо должно оказаться во входящих; если сообщение доставлено, то все настроено правильно, можно приступать к программированию.
Пример кода при данных параметрах приведен ниже:
Задание 1. Отослать сообщение разными способами средствами PHP.
Самый простой способ отправить письмо при помощи PHP - воспользоваться стандартной функцией mail. Она имеет следующий синтаксис:
bool mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])
Обязательные параметры:
· E-mail получателя
· Заголовок письма
· Текст письма
Необязательные параметры:
· Дополнительные заголовки письма
· Дополнительные параметры командной строки
Возвращаемое значение::
· true, если письмо было принято к доставке
· false, в противном случае.
Простейший пример ее использования выглядит так:
<html>
<HEAD>
<TITLE>
</TITLE>
</HEAD>
<BODY>
<?php
mail("lily@laba", "the subject", "Ya love ju","From: lily@laba \r\n");
echo "Письмо отправлено";
?>
</BODY>
</html>
Выполнив этот скрипт, зайдите в Outlook и на панели инструментов нажмите кнопку «Доставить…». Сообщение, отправленное средствами PHP должно появиться во входящих!
Если у Вас на экране появилась ошибка "Fatal error: Call to undefined function: mail()", это значит, что либо PHP собран без поддержки функции mail, либо она запрещена настройками сервера. Такая практика в последнее время широко распространена на бесплатных хостинговых серверах. Если Вы столкнулись с такой проблемой, воспользуйтесь возможностью отправки писем при помощи сокетов (sockets), детально описанной в разделе "альтернативные способы отправки писем". В случае, если Вы администратор системы, обратитесь к разделу "Как настроить сервер" и попробуйте устранить эту проблему как таковую.
Дополнительные заголовки письма (additional headers) могут использоваться для указания кодировки письма, адреса отправителя, обратного адреса и множества других опций. Они должны быть разделены переводом строк: комбинацией "\r\n". Например, так:
Перейдем к более сложному примеру. Предыдущие скрипты работали с форматом text/plain, теперь же попробуем отправить почту в формате HTML нескольким адресатам с указанием кодировки:
Комментарии к примеру: вначале мы определяем, кому адресовано письмо. Если получателей несколько, их адреса указываются в одной строке и разделяются запятыми. При задании заголовка и тела письма следите, чтобы кодировка, в которой они действительно написаны, совпадала с заявленной в заголовке charset.
В нашем примере переменная $headers состоит из четырех строк: в первых двух мы указываем тип отправляемого письма - HTML - и его кодировку. В следующих двух строках мы указываем адрес отправителя и адрес, по которому следует отправить скрытую копию письма.
!!! Зачастую при отправке письма, в котором тема и текст послания написаны русскими буквами на почту приходит сообщение в непонятных символах. А все дело в том, что для почты у нас принято использовать кодировку KOI8-R, а для веб – Win-1251 (ANSI) –так, и выходит – мы шлем с сайтов в win-1251, а почтовые программы открывают его как KOI8-R...
Выходов из ситуации много. Самое простое, что можно сделать – перекодировать тему и текст сообщения. В PHP предусмотрена стандартная процедура:
Она перекодирует текст, содержащийся в переменной $str из кодировки $from в кодировку $to. Указание кодировки происходит посредством символов латинского алфавита, доступные параметры и соответствующие им кодировки представлены в таблице:
k
KOI8-R
w
Win-1251
i
ISO8859-5
a
X-CP866
d
X-CP866
m
X-Mac-Cyrillic
Как видно из таблицы, в нашем случае, перед отправкой сообщения, содержащегося в переменной $message, его нужно перекодировать из w в k (из Win-1251 в KOI8-R), это выглядит так: $message, = convert_cyr_string ($message,w,k); вот и все, теперь можно спокойно отсылать наше письмо. Код mail.php выглядит так:
<?php
if (isset($_POST[subject])) {$subject = $_POST[subject];}
if (isset($_POST[Comment])) {$message = $_POST[Comment];}
$message = convert_cyr_string ($message,w,k);// перекодировка текста сообщения
$subject = convert_cyr_string ($subject,w,k);// перекодировка темы сообщения
Одна из часто возникающих проблем при отправке почты в koi8 - это формирование заголовка письма. Для ее решения необходимо воспользоваться следующим кодом, который переводит строку в кодировке win-1251 в понятный большинству почтовых клиентов koi8 заголовок.
К примеру, заголовок "Почтовое уведомление" будет выглядеть как
=?koi8-r?B?8M/e1M/Xz8Ug1dfFxM/NzMXOycU=?=
Если Вы все сделали правильно, а получатель письмо не получает (помните, что временные издержки на доставку письма зависят от многих факторов и могут колебаться от нескольких минут до нескольких часов), убедитесь в том, что оно действительно отправилось. Это необходимо сделать в 2 этапа. Вначале попробуйте выполнить код:
<?php if (mail("nobody@example.com", "the subject", "Example message", "From: webmaster@example.com \r\n")) { echo "messege acepted for delivery"; } else { echo "some error happen"; } ?>
Индивидуальное задание:Разработать форму (макет приведен на рисунке 1) для отправки e-mail указанному пользователю в соответствии с приведенными выше описаниями. Внедрить данную форму в разрабатываемый в ходе предыдущих работ сайт.