Обычно CGI mailto.exe используется для реализации WEBMAIL, записывая оператор «< form action="mailto:email адрес" метод=post >" в файл HTML или вызывая функцию WINDOWS API. Использование WINDOWS API и запись оператора «< form action="mailto:email Address" Method=post >» в HTML-файле требуют, чтобы браузер пользователя загружал такое программное обеспечение, как EXCHANGE, OutlookEXPRESS или OUTLOOK, а также есть некоторые просмотр Сервер не поддерживает оператор MAILTO. Использование CGI для реализации WEBMAIL не предъявляет требований к браузеру пользователя, но оно неэффективно. Технология CGI постепенно заменяется технологией ISAPI/NSAPI. В этой статье будет обсуждаться реализация WEBMAIL с использованием технологии ISAPI.
Разрабатывать программы веб-сервера с помощью Delphi 4 очень просто. Delphi 4 предоставляет большое количество компонентов и объектов для поддержки разработки программ веб-сервера. Ниже приведен пример использования DELPHI для разработки программы ISAPI WEBMAIL, которая реагирует на ввод пользователя. Только пользователи, зарегистрированные на отправляющем сервере, могут отправлять электронные письма через браузер. Для простоты программа не обеспечивает конфиденциальность передаваемых данных.
Сначала установите ядро базы данных dbe на веб-сервер и установите псевдоним базы данных: yh, указывая на файл базы данных user.db, содержащий имя пользователя и пароль пользователя. Затем создайте два HTML-файла с именами: dl.html, qd.html соответственно и поместите их в каталог веб-сервера по умолчанию (например: C: INETPUBWWWROOT).
Содержимое dl.html следующее:
<html>
< head >< title >Система отправки электронной почты</ /title >< /head >
<тело>
<h1>Система отправки электронной почты</h1>
<p> Пожалуйста, введите свое имя пользователя и пароль. </p>
< form Method="post" action="/scripts/xsmd" >
< p >Имя пользователя: < input type="text" length=10
name="имя пользователя" >
Пароль: <input type="passWord"
длина=10 name="пароль" >< /p >
< p >< input type="submit" value="OK" >
< input type="reset" value="Очистить" >< /p >
</форма>
</тело>
</html >
Содержимое файла qd.html следующее:
< html >< head >< title >Заполните форму</ /title >< /head >
<тело>
<form Method="post" action="feedback" >
< p >Пожалуйста, введите адрес электронной почты получателя: toaddress:
< тип ввода = "текст" длина = 20
name="адрес жаба" >< /p >
<p>Пожалуйста, заполните тему. <тип ввода="текст"
length=20 name="subject" >< /p >
<p>Содержание:</p>
< p>< input type="textarea" length=40
width=40 name="body" >< /p >
< p >< input type="submit" value="OK" >
< input type="reset" value="Очистить" >< /p >
</форма>
</тело>
</html >
Создайте новое приложение WEB SERVER на базе ISAPI в DELPHI и вручную добавьте nmsmtp1, query1 и pageproducer1.
Среди них: свойство pageproducer1: htmlfile: c:inetpubwww.rootqd.html. Свойство:host nmsmtp1 (адрес отправляющего почтового сервера) здесь — smtp.netease.com. порт: 25. Глобальные переменные: sername:string;flag:boolean;
Добавьте элемент действия с путем /feedback, код следующий:
процедура TWebModule1.WebModule1WebActionItem1
Действие (Отправитель: TObject;
Запрос: TWebRequest Ответ:
TWebResponse; вар Обработано: логическое значение);
Число переменных: целое число;
С: строка;
Начинать
Запрос1.закрыть;
Запрос1.sql.очистить;
S:='выберите счетчик (имя пользователя) из
user.db, где username="';
S:=s+request.contentfields.values['username']+'"';
S:=s+' и пароль="';
S:=s+request.contentfields.values['psword']+'"';
Query1.sql.add(S);
Запрос1.открыть;
Если запрос1.count=0
затем response.content:='< html >< head >< title >
</title >< body >Имя пользователя и пароль неверны, введите их еще раз.
</body >< /html >'
Еще
Имя пользователя:=request.contentfields.values['имя пользователя'];
Response.content:=pageproducer1.content;
Конец;
Добавьте еще один элемент действия с путем /sendmail.
Его программный код следующий:
процедура TWebModule1.WebModule1Web
ActionItem2Action (Отправитель: TObject;
Запрос: TWebRequest Ответ:
TWebResponse; вар Обработано: логическое значение);
Тело Var:строка;
Начинать
Флаг:=истина;
body:=request.contentfields.values['body'];
Pageproducer1.htmldoc.clear;
Pageproducer1.htmldoc.add('< html >< body >');
Nmsmtp1.postmessage.clear;
Nmsmtp1.postmessage.fromaddress:=имя_пользователя+
'@netease.com';
Nmsmtp1.postmessage.from:=имя пользователя;
Nmsmtp1.postmessage.body.add(тело);
Nmsmtp1.postmessage.toaddress.add
(request.contentfields.values['toaddress']);
Nmsmtp1.postmessage.subject:=
request.contentfields.values['subject'];
Нмсмтп1.коннект;
Если flag=true, тогда начинается Nmsmtp1.sendmail;
nmsmtp1.disconntent;конец
pageproducer1.htmldoc.add
('< /body >< /html >');
response.content:=pageproducer1.content;
конец;
События, которые увеличивают nmsmtp1, следующие:
процедура TWebModule1.NMSMTP1Connect(Отправитель: TObject);
начинать
pageproducer1.htmldoc.add
('< p >Уже подключено к серверу исходящей почты</p>');
конец;
процедура TWebModule1.NMSMTP1Connection
Ошибка (Отправитель: TObject);
начинать
флаг: = ложь;
pageproducer1.htmldoc.add
('< p >Соединение не удалось</P >');
конец;
процедура TWebModule1.NMSMTP1ConnectionRequired
(var Handled: Boolean);
начинать
pageproducer1.htmldoc.add('< p >Требуется подключение</p>');
конец;
процедура TWebModule1.NMSMTP1Failure (Отправитель: TObject);
начинать
pageproducer1.htmldoc.add('< p >Не удалось отправить электронное письмо</p>');
флаг: = ложь;
конец;
процедура TWebModule1.NMSMTP1Header
Неполный (обработанная переменная: Boolean;
hiType: целое число);
начинать
pageproducer1.htmldoc.add('< p >head не завершена</ /p >');
флаг: = ложь;
конец;
процедура TWebModule1.NMSMTP1InvalidHost
(var Handled: Boolean);
начинать
pageproducer1.htmldoc.add('< p >
Неверный адрес сервера отправки электронной почты</p>');
флаг: = ложь;
конец;
процедура TWebModule1.NMSMTP1RecipientNot
Найдено(Получатель: Строка);
начинать
pageproducer1.htmldoc.add
('< p >Полученный адрес электронной почты неверен</p>');
флаг: = ложь;
конец;
процедура TWebModule1.NMSMTP1Success(
Отправитель: TObject);
начинать
pageproducer1.htmldoc.add('< p >
Электронное письмо успешно отправлено</ /p >');
конец;
Сохраните проект как sendmail.dpr, скомпилируйте его и поместите в путь к исполняемому файлу веб-сервера (например: c:intpubscripts). Вы можете ответить на ввод пользователя в HTML-файле dl.htm, и если пользователь имя пользователя и пароль верны. Вы можете войти на страницу для отправки электронных писем. Пользователи могут отправлять электронные письма после заполнения адреса электронной почты, темы и содержания. Эта программа прошла отладку на NT SERVER.