Sviluppare un modulo contatti (form mail) in JSP
Pagina 1 di 3
Una funzionalità fondamentale e che, solitamente, è presente in quasi tutti i siti web; sto parlando del modulo contatti che permette all'utente di contattare velocemente l'autore o il gestore del sito.
Quello che vedremo in questo articolo è l'implementazione di un modulo contatti attraverso le Java Server Pages. Fare ciò è, purtroppo, molto meno semplice rispetto ad altri linguaggi di programmazione web oriented: tramite le JSP, infatti, bisogna ricorrere all'utilizzo delle Java Mail API grazie alle quali potremo costruire ed inviare i messaggi di posta elettronica in un contesto puramente ad oggetti.
Propongo di procedere creando una Servlet che si occuperà di inviare l'email attraverso le Java Mail Api e in seguito creeremo un modulo html che utilizza la servlet. Iniziamo quindi facendo una panoramica generale all'utilizzo di questo set di API.
Le Java Mail API
Il package javax.mail definisce un modello di classi comuni a tutti i sistemi di posta elettronica, che concettualmente è strutturato dai diversi tipi di messaggi (solo testo, HTML, con allegati etc..) ed il sistema di trasporto tramite protocollo applicativo SMPT e ricezione POP3 o IMAP.
Il protocollo indispensabile per il nostro scopo corrisponde all'SMPT (Simple Mail Protocol Transfert) che viene impiegato nella trasmissione dei messaggi di posta. Se la libreria non è presente nella vostra piattaforma java la potete scaricare a questo indirizzo JavaMail 1.4.3 e successivamente importare il file jar nel progetto.
Vediamo le classi necessarie per costruire ed inviare il messaggio:
- javax.mail.Session: Questa classe rappresenta una sessione necessaria alle operazioni che si effettuano su un sistema di posta elettronica. Come vedremo tutti gli oggetti coinvolti nella trasmissione del messaggio fanno riferimento ad una istanza di questa classe.
- javax.mail.Message: Astrae il concetto di messaggio. Come sappiamo un messaggio di posta elettronica può assumere diverse forme. Infatti possiamo decidere di inviare un messaggio di solo testo, oppure in HTML o anche un messaggio che ontiene un allagato. Quindi per ogni tipo di messaggio esiste una concretizzazione di questa classe. Per il nostro scopo, faremo riferimento alla sottoclasse javax.mail.internet.MimeMessage che corrisponde al semplice messaggio di testo.
- javax.mail.Transport: Si occupa semplicemente di inviare il messaggio tramite il server SMTP utilizzando il metodo statico send().
Adesso vediamo come si compone e si avvia una sessione per la trasmissione di un messaggio di posta elettronica. Per prima cosa bisogna settare alcuni parametri di configurazione della sessione tramite un'oggetto di tipo Properties.
I parametri di cui abbiamo bisogno nel nostro caso sono l'indirizzo dell'host su cui risiede il server SMTP, e la porta del servizio (solitamente è la 25):
...
Properties props = new Properties();
props.put("mail.smtp.port", "25");
props.put("mail.smtp.host", "smpt.example.com");
Session session = Session.getDefaultInstance(props);
...
Abbiamo inizializzato così una sessione che si interfaccia con il server indicato tramite l'attributo mail.smtp.host. Non ci resta che costruire il messaggio. Come accennavo, esistono diverse tipologie di messaggi a cui corrisponde una sottoclasse di javax.mail.Message che ne concretizza le caratteristiche. Faremo riferimento ad un semplice messaggio di testo che è possibile comporre tramite MimeMessage:
....
Message message = new MimeMessage(session);
InternetAddress from = new InternetAddress("mittente@example.com");
InternetAddress to = new InternetAddress("destinatario@example.com");
message.setFrom(from);
message.addRecipient(Message.RecipientType.TO, to);
message.setSubject("Oggetto del messaggio");
message.setSentDate(new Date());
message.setText("Corpo del messaggio");







