Corsi on-line

Un semplice Formmail

  • CommentiScrivi un commento
  • ForumDiscuti sul forum
  • PrevGestione dello Status 301 Moved Permanently con CGI
  • NextUn semplice guestbook con file di testo al posto del DB

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).

L'articolo continua dopo la pubblicità

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.

Corsi
  • Corso Linux
    Corso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso MySQL
    Corso MySQL
    Gestione del database open-source. A partire da 39 €
  • Corso PHP
    Corso PHP
    Creare siti web dinamici avanzati con PHP e MySQL. A partire da 39 €
Vedi anche...
Guide