Пособие по написанию WAP-сайтов

       

Подробнее о сценарии языка Perl WapMail.pl



Подробнее о сценарии языка Perl WapMail.pl

Как было сказано выше, когда пользователь выбирает опцию Send, приложениеWapMail.wml вызывает сценарий языка Perl, который и пересылает сообщениеэлектронной почты выбранному пользователю. Далее сценарий создает новуюдеку формата WML, которая запускается в браузере протокола WAP и отображаетсообщение об успешной пересылке сообщения. Как вы увидите, для пересылкисообщения сценарий просто использует программу пересылки почты ОС Unix.Исходный код сценария WapMailWML.pl приведен ниже:

#!/usr/bin/perl

require 'DeckUtils.pl';

$mailprog = "/bin/sendmail";

# Get the CGI variables. %cgiVars = &AppUtils::ParseCGIVars(); $ReplyTo = $cgiVars{"ReplyTo"}; $SendTo = $cgiVars{"SendTo"}; $MsgSubject = $cgiVars{"MsgSubject"}; $MsgText = $cgiVars{"MsgText"};

open(MAIL, "|$mailprog $SendTo");

print MAIL "Reply-To: $ReplyTo\n"; print MAIL "From: Demo\@waplib.com\n"; print MAIL "To: $SendTo\n"; print MAIL "Subject: $MsgSubject\n\n";

print MAIL "$MsgText\n";

close(MAIL);

print "Content-type: text/vnd.wap.wml\n\n"; print "&lt?xml version=\"1.0\"?&gt\n"; print "&lt!DOCTYPE wml PUBLIC \"- //WAPFORUM//DTD WML 1.1//EN\"\n"; print "\"http://www.wapforum.org /DTD/wml_1.1.xml\"&gt\n\n"; print "&ltwml&gt\n"; print "&ltcard&gt\n"; print "&ltdo type=\"accept\"&gt\n"; print "&ltgo href=\"../WapMail/WapMail.wml\" /&gt\n"; print "&lt/do&gt\n"; print "&ltp align=\"left\"&gt\n"; print "Message has been sent to:&ltbr/&gt\n"; print "$SendTo\n"; print "&lt/p&gt\n"; print "&lt/card&gt\n"; print "&lt/wml&gt\n";

Если вы внимательно проанализируете элемент open, вы увидите, что символуmailprog предшествует знак конвейера "|".


Имя mailprog является просто указателем на программу пересылки почты. Приложение использует знак конвейера"|", потому что открывает программу и передает ей данные по конвейеру посредством print

Первая строка сценария является всего лишь комментарием, сообщающим интерпретатору командной строки, где находится интерпретатор языка Perl. Втораястрока сообщает этому интерпретатору, что исходный сценарий требует другойсценарий DeckUtils.pl из SDK и содержит функцию ParseCGIVars, которая извлекает пары данных имя/значение, передаваемые сценарию из карты Confirm. Далее сценарий для сокращения записи присваивает переменной mailprog строковое значение полного пути к программе

Приложение анализирует список параметров (которые передаются из картыConfirm) и присваивает извлеченные значения переменным SendTo, ReplyTo,MsgSubject и MsgText. Далее, приложение запускает почтовую программу и использует print для адресации сообщения, ввода текста сообщения и так далее.Как вы видите, приложение присваивает значение ReplyTo заодно и значениюFrom сообщения. Значение From сообщает приложению, что оно было послано отDemo@waplib.com (вы можете изменить это значение, ссылаясь на свой собственный сайт в Сети). Значение ReplyTo, в отличие от From, определяет адрес, покоторому будет передан ответ, если получатель сообщения захочет на него ответить (значение ReplyTo соответствует значению, введенному пользователем призапуске приложения).

После того как сценарий закрывает почтовую программу, она пересылает сообщение получателю. Далее, сценарий создает новую деку, сообщающую об успешной пересылке сообщения.

Содержание раздела