Un semplice Formmail
Inviare email tramite form con uno script CGI non richiede particolari conoscenze a livello di programmazione; in questo breve articolo vedremo come si possa costruire in pochi passaggi un efficiente sistema di invio automatico di e-mail verso un utente.
Per far questo utilizzeremo un form che richiede soltanto l'inserimento di un indirizzo posta elettronica, come accade per esempio per i moduli d'iscrizione alle mailing list.
Di seguito riportiamo il semplice codice HTML che starà alla base del nostro form mail:
<html> <head> <title>Form mail in CGI</title> </head> <body> <form action="http://www.sito.it/cgi-bin/mail.cgi" method="post"> Inserisci il tuo indirizzo email nel campo sottostante:<br /> <input name="email" type="text" size="30"><br /> <input type="submit" value="Spedisci"> </form> </body> </html>Ora daremo uno sguardo al codice necessario per l'invio della e-mail di risposta, successivamente passeremo alle spiegazioni.
#!/usr/bin/perl
use CGI;
my $mailer = new CGI;
my $sender = "/usr/sbin/sendmail -t";
my $mittente = "Reply-to: mail@sito.it";
my $oggetto = "Subject: Messaggio ricevuto";
my $messaggio = "Grazie per la tua iscrizione alla mailing list.";
my $destinatario = $mailer->param('email');
unless ($destinatario)
{
print $mailer->header;
print "Hai dimenticato di inseririre il tuo indirizzo email.";
}
my $invia = "To: ".$mailer->param('email');
open(SENDMAIL, "|$sender") or die "Problama in $sender: $!";
print SENDMAIL $mittente;
print SENDMAIL $oggetto;
print SENDMAIL $destinatario;
print SENDMAIL "Content-type: text/plain\n\n";
print SENDMAIL $messaggio;
close(SENDMAIL);
print $mailer->header;
print "Riceverai una mail di benvenuto tra pochi istanti.";
Lo script sfrutta da una parte la semplice sintassi del linguaggio Perl per il codice, dall'altra utilizza Sendmail per l'invio, il servizio SMTP Open Source per la posta elettronica più utilizzato e diffuso in ambiente Linux (e quindi anche il più comune trà i server web).
Come primo passaggio abbiamo definito tutte le variabili necessarie all'invio: percorso al server SMTP, mittente, oggetto, testo della mail e destinatario (parametro inviato tramite form).
In secondo luogo abbiamo introdotto una funzione di controllo, unless() che verifica l'esistenza dell'argomento passatole come parametro, nel nostro caso la variabile '$destinatario'. Se il parametro è inesistente viene lanciata una notifica che lo richiede.
Infine, le variabili vengono passate al server SMTP, che viene aperto, verificato nel suo funzionamento e preparato all'invio dei dati raccolti verso l'indirizzo di posta indicato.
Una volta inviata l'email Sendmail viene chiuso arrestando il processo in corso e l'utente visualizza una segnalazione dell'avvenuto invio della email di benvenuto.







