La specifica J2EE offre varie API per l'integrazione dei sistemi aziendali tra cui la posta elettronica. Questo articolo verterà sui fondamentali strumenti necessarie per progettare e realizzare un sistema di posta aziendale.Per fare ciò è neccessario innanzitutto comprendere e utilizzare un certo numero di protocolli standard:
- POP (Post Office Protocol) permette di ricevere la posta da un server remoto(Server POP) ,è necessario per le personne non connesse in permanenza in internet a consultare la posta anche in modalità offline.Ci sono due versioni di questo protocollo, pop2 e POP3, e sono assegnate rispettivamente le porte 109 e 110 e funzionano da riga di comando testuale radicalmente diversi.
- IMAP (Internet Message Access Protocol) constituisce un'alternativa al protocollo POP con maggior funzionalità: permette la gestione di accessi simultanei,gestioni più caselle eletroniche ,offre anche criterio di selezione dei messaggi di posta
- SMTP (Simple Mail Transfer Protocol) è il protocollo standard per il trasferimento della posta da un server ad un altro in modlità punto-a-punto.E' un protocollo orientato alla connessione , incapsulato all'interno di un pacchetto TCP/IP .La posta è consegnata direttamente al server del destinatario.Il protocollo funzionano con i comandi testuali inviati al server SMTP(porta default 25).
- MIME (Multipurpose Internet Mail Extensions).Le specifiche di base del protocollo SMTP richiedono che i caratteri trasmessi siano codicicati in codici ASCII su 7 bits e il 8 .simo explicitamente a zero.tra questi algoritmi MIME consente il trasferimenti dei caratteri accentuati .
Oltre a tali protocolli ,Java Mail può essere usata su sistemi che utilizzano protocolli proprietari.Una delle particolarità di questa API è che sia possibile utilizzare anche nella piattaforma Standard Edition.
Classi ed Interfacce chiave di JavaMail
Tutte le classi che useremo fanno parte del package
javax.mail.
Rappresenta una sessione di lavoro in cui l'applicazione s'interfaccia con il sistema di posta aziendale, solitamente si parla di creare un istanza della sessione in quanto una sessione può essere condivisa da più applicazioni.
Il codice da scrivere è il seguente :
Properties properties = new Properties();
//inseriamo qui le proprietà che dipendente dell'ambiente di installazione della nostra applicazione
Session sessione = session.getDeffaultInstance(properties,null);
Il metodo
getDeffaultInstance() ha come firma la proprietà dell'ambiente e il secondo argomento è un oggetto di tipo
Authenticator addatto alla autenticazione al sistema di posta aziendale..
La classe costituisce il contenuto di una mail. Classe astratta che viene ereditatà dalla sotto classe MimeMessage del package
javax.mail.internet e offre una implementazione secondo lo standard del protoccolo MIME.
Dall'oggetto Session ,si costruisce un MimeMessage con tutti i dati della mail. esempio:
MimeMessage ilMioMessaggio = new MimeMessage(sessione)
ilMiomessage.setText("il corpo del messaggio");
ilMioMessage.setSubject("il mio titolo");
La Super classe Address è astratta e crea un indirizzo mail. La sottoclasse
InternetAddress nel package javax.email.internet.Si costruisce come da esempio seguente;
InternetAddress ilMioIndirizzoMail = new InternetAddress("cnapOnline@cnaponline.it");
InternetAddress ilDestinatarioMail = new InternetAddress("info@cnaponline");
message.setFrom(ilMioIndirizzoMail);
message.addRecipient("Message.RecipientType.TO,ilDestinatarioMail");
Usando gli standards , la classe consente di definire il mittente e il destinatario della posta come descritto sopra.
La classe Authenticator è l'oggetto responsabile dell'accesso ai sistemi di posta aziendale con modalità di autenticazione.E' fondamentale implementare il metodo getPasswordAuthentication() per generare un oggetto di tipo PasswordAuthentication contenete username e password per accedere nel sistema.
La creazione dell'istanza della classe Authenticator viene dal suo stesso costruttore:
Authenticator authenticator = new Authenticator();
e usare l'oggetto Session per istruire l'applicazione della presenza del sistema di autenticazione:
Session sessione = new Session.getdefaultInstance(properties,authenticator);
La classe Transport è un componente dondamentale nella specifica di JavaMail inquanto consente di effetuare la spedizione del mail .La classe offre numerosi metodi per specializzare sempre di più il trasposto del messaggio.L'istruzione semplice è la seguente:
Transport.sendMessage(ilMioMessaggio);
La classe Store consente di poter connetersi al sistema e ricevere le mails. fa parte del package javax.mail.
Store store = sessione.getStore("imap");
store.connect(hostname,unsername,password);
Fatto ciò è necessario scorre i messaggi mails , la classe Store organizza i messaggi in cartelle , ogni cartella è un oggetto Java chiamato Folder che viene istanza dall'oggetto Store come segue:
Folder cartella = store.getFolder("INBOX");
cartella.open("Folder.READ_ONLY")
Message messaggio[ ]=folder.getMessaggi();
Il metodo getMessaggi() fornisce un array di oggetti di tipo Message ,e si itera l'elenco per estrarre il contenuto dei vari mail.
Questo articolo ha voluto descrivere in modo semplice i vari passi per creare e ricevere e spedire una mail interfacciandosi con il sistema di posta aziendale.Nel prossimo articolo presenteremmo una implemetazione semplice per l'invio e ricezione di una sempice mail con JavaMail.