$!(MODIFIED BY INSTALL_SECURE.COM v1.0 26-SEP-2002 13:39:41.27) $!(changed "HT_EXE:" to "CGI-BIN:[000000]") $!---------------------------------------------------------------- $! MailForm VMS 1.1 $! $! A simple TMAILER script replacement for sending forms by e-mail. $! Written in DCL, works under WASD/VMS. $! MailForm accepts POSTed request from the external html form and $! mails all the input fields in human readable representation $! using CGIUTL for conversion and VMS MAIL for mailing. $! Requires CGIUTL 1.8.3 to work correctly with charsets. $! $! Logicals: $! MAILFORM_REFERER - list of serviced referers $! (if defined, else - any). $! Wildcards allowed. $! $! Some input field names (case insensitive) in the form affects MailForm. $! $! MailForm_To - address where the form is sent $! (default - postmaster@WWW_HTTP_REFERER) $! MailForm_Reply_To - address where the reply should be sent $! (default - none) $! MailForm_Subject - mail subject $! (default - none) $! MailForm_charset - mail charset (correspond it to form charset) $! (default - none) $! $! Query string with POST method: $! ?MailForm_format=... - changes the message format $! according to CGIUTL/FORMAT=... $! (default as for CGIUTL) $! $! The example HTML form is accessable via GET request to MailForm. $! You can save it to disk and edit as You want. $! $! Query string with GET method: $! ?MailForm_help=form - displays example form source $! ?MailForm_help=source - displays MailForm source $! $!---------------------------------------------------------------- $ SET NOON $ CR[0,8]=13 $ LF[0,8]=10 $ CRLF==""+CR+LF $ CGIUTL:==$CGI-BIN:[000000]CGIUTL $ SAY="WRITE/SYMBOL SYS$OUTPUT" $ IF WWW_REQUEST_METHOD .NES. "POST" THEN GOTO HELP $! $ IF F$TYPE(WWW_HTTP_REFERER) .EQS. "" THEN GOTO DOFORM $ IF F$TRNLNM("MAILFORM_REFERER") .EQS. "" THEN GOTO DOFORM $ I=0 $ REF_LOOP: $ REF=F$EDIT(F$TRNLNM("MAILFORM_REFERER",,I),"UPCASE") $ I=I+1 $ IF REF .EQS. "" THEN GOTO REF_END $ HREF=F$EDIT(WWW_HTTP_REFERER,"UPCASE") $ PREF_LOOP: $ IF REF .EQS. "*" THEN GOTO DOFORM $ PREF=F$ELEMENT(0,"*",REF) $ IF PREF .EQS. "" THEN PREF=F$ELEMENT(1,"*",REF) $ LOC=F$LOCATE(PREF,HREF) $ IF LOC .GE. F$LENGHT(HREF) THEN GOTO REF_LOOP $ IF F$EXTRACT(0,1,REF) .NES. "*" $ THEN $ IF LOC .NE. 0 THEN GOTO REF_LOOP $ ELSE $ REF=REF-"*" $ ENDIF $ REF=REF-PREF $ HREF=F$EXTRACT(LOC,F$LENGHT(HREF),HREF)-PREF $ IF REF .NES. "" THEN GOTO PREF_LOOP $ IF HREF .EQS. "" THEN GOTO DOFORM $ GOTO REF_LOOP $ REF_END: $ CGIUTL /LOCATION="''WWW_HTTP_REFERER'" $ EXIT $! $ DOFORM: $ FORMAT="" $ IF F$TYPE(WWW_FORM_MAILFORM_FORMAT) .NES. "" THEN - FORMAT="/FORMAT="+"HEADINGS" $ CGIUTL/URLDECODE/PREFIX=WWW_FORM/SYMBOLS'FORMAT'/OUTPUT=HT_SCRATCH:'F$GETJPI("","PID")'.TXT $! =(LINES,NOCONTROL) $ SMTP_X_Sent=WWW_REQUEST_TIME_GMT $ SMTP_SCHEME=F$EDIT(WWW_REQUEST_SCHEME,"UPCASE")-":" $ SMTP_HOST="[''WWW_REMOTE_ADDR']" $ IF F$TYPE(WWW_REMOTE_HOST) .NES. "" THEN SMTP_HOST=WWW_REMOTE_HOST $ SMTP_Received="from ''SMTP_HOST' by ''WWW_SERVER_NAME' with ''SMTP_SCHEME'" $ SMTP_Content_Type="text/plain" $ SMTP_charset="" $ SMTP_Content_Disposition="inline" $ SMTP_MIME_version="1.0" $ IF F$TYPE(WWW_HTTP_REFERER) .NES. "" $ THEN $ SMTP_To="postmaster@"+F$ELEMENT(2,"/",WWW_HTTP_REFERER) $ ELSE $ SMTP_To="postmaster@"+WWW_SERVER_NAME $ ENDIF $ SMTP_Reply_To="" $ SMTP_Subject="" $ IF F$TYPE(WWW_HTTP_REFERER) .NES. "" THEN SMTP_Subject=WWW_HTTP_REFERER $ SMTP_X_Mailer="MailForm VMS 1.1" $! $ IF F$TYPE(WWW_FORM_MAILFORM_TO) .NES. "" THEN SMTP_TO=WWW_FORM_MAILFORM_TO $ IF F$TYPE(WWW_FORM_MAILFORM_SUBJECT) .NES. "" THEN SMTP_SUBJECT=WWW_FORM_MAILFORM_SUBJECT $ IF F$TYPE(WWW_FORM_MAILFORM_REPLY_TO) .NES. "" THEN SMTP_REPLY_TO=WWW_FORM_MAILFORM_REPLY_TO $ IF F$TYPE(WWW_FORM_MAILFORM_CHARSET) .NES. "" THEN SMTP_CHARSET=WWW_FORM_MAILFORM_CHARSET $! $ SMTP=""+SMTP_Subject $ SMTP=SMTP+CRLF+"MIME-version: "+SMTP_MIME_version $ IF SMTP_charset .NES. "" THEN - SMTP=SMTP+CRLF+"Content-Type: "+SMTP_Content_Type+"; charset="+SMTP_charset $ SMTP=SMTP+CRLF+"X-Mailer: "+SMTP_X_Mailer $! SMTP=SMTP+CRLF+"Cc: "+SMTP_Reply_To $ SMTP=SMTP+CRLF+"Reply-To: "+SMTP_Reply_To $ IF F$TYPE(WWW_HTTP_REFERER) .NES. "" THEN - SMTP=SMTP+CRLF+"In-Reply-To: "+WWW_HTTP_REFERER $ SMTP=SMTP+CRLF+"Received: "+SMTP_Received $! $ CGIUTL/RESPONSE/EXPIRED/CONTENT="text/html"/CHARSET="''SMTP_charset'" $ SAY "" $ IF F$TYPE(WWW_HTTP_REFERER) .NES. "" THEN - SAY WWW_HTTP_REFERER $ SAY "",CRLF $! $! $ IF F$TYPE(WWW_HTTP_REFERER) .NES. "" THEN - SAY "

",WWW_HTTP_REFERER,"

",CRLF $ SAY "
",CRLF
$ SAY "To: ",SMTP_TO,CRLF
$ SAY "Subject: ",SMTP,CRLF
$ SAY "

",CRLF
$ CGIUTL/COPY HT_SCRATCH:'F$GETJPI("","PID")'.TXT
$ SAY "

",CRLF
$ IF SMTP_TO .NES. ""
$   THEN
$   IF SMTP_REPLY_TO .EQS. ""
$     THEN
$     MAIL/NOSELF/SUBJ="''SMTP'" HT_SCRATCH:'F$GETJPI("","PID")'.TXT "SMTP%""''SMTP_TO'"""
$     ELSE
$     MAIL/NOSELF/SUBJ="''SMTP'" HT_SCRATCH:'F$GETJPI("","PID")'.TXT "SMTP%""''SMTP_TO'""","SMTP%""''SMTP_REPLY_TO'"""
$     ENDIF
$   ENDIF
$ DEL HT_SCRATCH:'F$GETJPI("","PID")'.*;*
$!
$ SAY "
",CRLF $ EXIT $! $ HELP: $ CONT="text/html" $ IF F$TYPE(WWW_FORM_MAILFORM_HELP) .EQS. "" THEN GOTO SAMPLE $ IF F$EDIT(WWW_FORM_MAILFORM_HELP,"UPCASE") .EQS. "SOURCE" THEN GOTO SOURCE $ IF F$EDIT(WWW_FORM_MAILFORM_HELP,"UPCASE") .EQS. "FORM" THEN CONT="text/plain" $! $ SAMPLE: $ CGIUTL/RESPONSE/CONTENT="''CONT'"/CHARSET="iso-8859-1" $ SAY "MailForm",CRLF $ SAY "",CRLF $ SAY "",CRLF $ SAY "
",CRLF $ SAY "",CRLF $ SAY "",CRLF $ SAY "",CRLF $ SAY "",CRLF $ SAY "",CRLF $ CGIUTL/COPY SYS$INPUT
",CRLF $ SAY "MailForm",CRLF $ SAY "
example",CRLF $ SAY "
Title
First Name
Last Name
Reply-To
message
text
$ EXIT $! $ SOURCE: $ CGIUTL/RESPONSE/CONTENT="text/plain"/CHARSET="iso-8859-1" 'F$ENVIRONMENT("PROCEDURE")' $ EXIT $!----------------------------------------------------------------