form2mail

Stanisław Chlebicki

Form2mail jest programem, dzięki któremu, dane z formularza na stronie, mogą być przesłane na twoje konto pocztowe. Dzięki takiemu ułatwieniu, będziesz mógł przyjąć zamówienie, otrzymać plik od kolegi lub opinie na temat twojej witryny. Form2mail jest szybki, skuteczny, a przede wszystkim poręczny.

Oto kod przykładowego formularza:

<form action="adres pliku form2mail" method="POST">
<input type="hidden" name="mailto" value="twój adres e-mail">
<input type="hidden" name="mailsubject" value="temat listu który przyjdzie do ciebie (od pliku form2mail">
<input type="hidden" name="desturl" value="adres strony, która wyświetli się po wypełnieniu formularza">
<p>twój ulubiony zespół black metalowy:&nbsp;<INPUT maxLength=30 name="nazwa" size=16>&nbsp;<input type="submit" name="Prześlij" value="Prześlij"></p>
</form>

Elementy zaznaczone na czerwono są jeszcze do uzupełnienia, a sam formularz, i jego pytania, zależą tylko od ciebie...

Kod gotowego formularza powinien wyglądać tak:

<form action="http://www.byd.top.pl/cgi-bin/mailform.cgi" method="POST">
<input type="hidden" name="mailto" value="beethoven@kki.net.pl">
<input type="hidden" name="mailsubject" value="black metal">
<input type="hidden" name="desturl" value="http://www.form2mail.top.pl/thx.html">
<p>twój ulubiony zespół black metalowy:&nbsp;<INPUT maxLength=30 name="nazwa" size=16>&nbsp;<input type="submit" name="Prześlij" value="Prześlij"></p>
</form>

...a w rezultacie otrzymujemy:

twój ulubiony zespół black metalowy:  

pliki konfiguracyjne

Niektóre pliki form2mail, wymagają pliku konfiguracyjnego, który konfiguruje formularz. Tutaj dla przykładu użyję pliku http://portal.plocman.pl/form2mail/cgi-bin/form2mail.cgi.

Oto kod przykładowego formularza z użyciem pliku konfiguracyjnego:

<form action="http://portal.plocman.pl/form2mail/cgi-bin/form2mail.cgi" method="POST">
<input type="hidden" name="email" value="twój e-mail">
<input type="hidden" name="nazwa" value="twoja nazwa">
<input type="hidden" name="temat" value="temat listu który przyjdzie do ciebie (od pliku form2mail)">
<input type="hidden" name="config" value="lokalizacja pliku konfiguracyjnego">
<p>twój ulubiony zespół black metalowy:&nbsp;<INPUT maxLength=30 name="MUS:nazwa" size=16>&nbsp;twój e-mail:&nbsp;<input type=text size=15 name=email2>&nbsp;<input type="submit" name="Prześlij" value="Prześlij"></p>
</form>

Elementy zaznaczone na czerwono są jeszcze do uzupełnienia, a sam formularz, i jego pytania, zależą tylko od ciebie...

Plik konfiguracyjny możesz zbudować w dowolnym edytorze tekstu (np. Notepad) i zapisać w formacie *.txt. Do dokumentu wpisujemy:

strona::
return_www::
return_www_error::
return_email_temat::
return_email_tresc::

Jeżeli chcemy, aby osoba wypełniająca formularz otrzymała podziękowanie za wypełnienie formularza, musimy w nim utworzyć pole służące do podania przez odwiedzającego twoją witrynę swojego adresu e-mail. Pole to tworzymy następująco: <input type=text size=15 name=email2>. Następnie w pliku konfiguracyjnym w linii "return_email_temat::" podajemy temat listu z podziękowaniem, a w "return_email_tresc::" podajemy treść listu z podziękowaniem. Całą treść należy wpisać w jednej linijce bez używania "entera". Gdy chcemy przejść do nowej linii należy wpisać (tak jak w HTML), a program form2mail zamieni to na "enter".

Kod tak przygotowanego formularza powinien wyglądać następująco:

<form action="http://portal.plocman.pl/form2mail/cgi-bin/form2mail.cgi" method="POST">
<input type="hidden" name="email" value="beethoven@kki.net.pl">
<input type="hidden" name="nazwa" value="2222">
<input type="hidden" name="temat" value="black metal">
<input type="hidden" name="config" value="http://www.007bond.3d.pl/form2mail/config.txt">
<p>twój ulubiony zespół black metalowy:&nbsp;<INPUT maxLength=30 name="MUS:nazwa" size=16>&nbsp;twój e-mail:&nbsp;<input type=text size=15 name=email2>&nbsp;<input type="submit" name="Prześlij" value="Prześlij"></p>
</form>

...w rezultacie otrzymujemy:

twój ulubiony zespół black metalowy:  twój e-mail:  

tworzenie własnego skryptu form2mail

Przy uruchomieniu własnego skryptu form2mail nie wystarczą dobre chęci i szeroka wiedza. Taki skrypt obsługuje CGI, a żeby na serwerze uruchomić jakikolwiek skrypt, ten musi być odpowiednio do tego przygotowany. Skrypt form2mail pisze się w języku Perl, dlatego upewnij się czy na serwerze znajduje się Perl i sendmail (poleceniem whereis - powinna się pokazać ścieżka do tych programów). Teraz stwórz plik "form2mail.cgi", na jego początku napisz ścieżkę do Perla; wpisujemy:

#!/usr/bin/perl

...teraz nagłówek dla przegladarki, który bedzie ją informował o tym, że przesyła dokument HTML

print "Content-type: text/html\n\n";

Teraz zająć się trzeba zawartością pól wysyłanych przez przeglądarkę. Robi się to za pomocą bibliotek, w tym kursie użyjemy gotowej, którą możesz ściągnąć z http://cgi-lib.berkeley.edu/. Dodaje się ją w następujący sposób:

require "nazwa twojej biblioteki.pl";

Odwołujemy się do biblioteki. Pod zmienne podstawiamy poszczególne pola:

@params=&ReadParse(*input);
$input =~ tr/&/\n/;
$input =~ tr/\%20/ /;
$input =~tr/\%0(\D)/\n$1/;

$email = $input{'email'};
$nazwa = $input{'nazwa'};

Teraz podobnie jak w HTMLu stworzymy stronę która zostanie wyświetlona po przesłaniu formularza...

print{
   <html>
   <head>
   <title>FORMULARZ</title>
   </head>
   <body>
   Formularz został wypełniony poprawnie. Fajnie, że lubisz $nazwa,<br>
   na $email dostaniesz jeszcze podziękowanie za wypełnienie formularza,<br>
   a jeśli $nazwa i mi się spodoba, napisze do ciebie coś jeszcze.
   </body>
   </html>
};

teraz piszemy treść listu, który, po przesłaniu formularza, zostanie automatycznie wysłany do osoby wypełniającej.

open(MAIL, "| sendmail $email") || die (blad);
print MAIL "To: $email\n";
print MAIL "From: twój adres e-mail\n";
print MAIL "Subject: black metal\n\n";
print MAIL "Ave black metal! Dzięki za wypełnienie formularza. Myślę, że zajrzysz jeszcze kiedyś na moją strone :-)\n";
close(MAIL);

teraz treść e-maila który dojdzie do ciebie, wraz z wynikami ankiety...

open(MAIL, "| sendmail twój adres e-mail") || die (blad);
print MAIL "Subject: black metal\n\n";
print MAIL "Niejaki $email napisał, że bardzo lubi $nazwa";
close(MAIL);

... i było by na tyle :-) Pamiętaj, że twój form2mail.cgi nie bądzie działał bez pliku biblioteki!