Come promesso:
Codice PHP:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import java.io.*;
/**
*
*
Title: SendEMail</p>
*
Description: Classe utilizzata per inviare una e-mail</p>
*
Copyright: Copyright (c) 2003</p>
*
Company: </p>
* @author:
* @version 1.0
*/
public class SendEMail {
/**
* Oggetto properties tramite cui settare la sessione
*/
private Properties pro;
/**
* Oggetto sessione
*/
private Session sessione;
/**
* Oggetto messaggio
*/
private Message messaggio;
/**
* Indirizzo e-mail mittente
*/
private InternetAddress da;
/**
* Indirizzi e-mail destinatari
*/
private InternetAddress[] a;
/**
* Costruttore della classe che setta, nelle properties, l'smtp utilizzato
* @param po -l'smtp utilizzato per inviare il messaggio
*/
public SendEMail( String po ) {
pro = System.getProperties();
pro.put( "mail.smtp.host", po );
}
/**
* Metodo che si occupa di settare la sessione
*/
private void setSessione(){
sessione = Session.getDefaultInstance( pro );
}
/**
* Metodo che si occupa di settare, inizializzare il messaggio e di inviarlo
* @param daChi -mittente
* @param aChi -destinatari
* @param oggetto -oggetto e-mail
* @param testoMessaggio -testo dell'email
* @param autoritation -true se bisogna autorizzarsi, false altrimenti
* @throws AddressException eccezione che si può verificare se l'indirizzo e-mail
* dovesse essere non corretto
* @throws MessagingException eventuale altra eccezione
*/
public void sendMessaggio( String daChi, String aChi, String oggetto, String testoMessaggio, boolean autoritation ){
try{
setSessione();
String host = pro.getProperty( "mail.smtp.host" );
System.out.println( "["+host+"]" );
Transport t = sessione.getTransport( "smtp" );
messaggio = new MimeMessage(sessione);
da = new InternetAddress(daChi);
a = InternetAddress.parse(aChi);
messaggio.setFrom(da);
messaggio.setRecipients(Message.RecipientType.TO, a);
messaggio.setSubject(oggetto);
messaggio.setSentDate(new Date());
messaggio.setText(testoMessaggio);
//messaggio.setDataHandler(this.allegato);
if( autoritation ){
String log = "franco.marmotta";
String psw = "franco123";
t.connect( host, log, psw );
}else{
t.connect();
}
t.send( messaggio );
t.close();
}catch( AddressException ae ){
ae.printStackTrace();
}catch( MessagingException me ){
me.printStackTrace();
}
}
public static void main( String[] args ){
SendEMail se = new SendEMail( "mail.191.it" );
se.sendMessaggio( "prova@tin.it", "prova@tin.it", "ciao", "prova", false );
//se.sendMessaggio( "kjhj@prova.it", "prova@tin.it", "ola", "ollllalala", false );
}
Non so se ti può servire cmq ti posto anche la ricezione:
Codice PHP:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
/**
*
*
Title: ReceiveEMail</p>
*
Description: Classe che si occupa della ricezione di EMail
* </p>
*
Copyright: Copyright (c) 2003</p>
*
Company: </p>
* @author:
* @version 1.0
*/
public class ReceiveEMail {
/**
* Oggetto Store
*/
private Store conserva;
/**
* Oggetto properties
*/
private Properties prop;
/**
* Oggetto Sessione
*/
private Session sessione;
/**
* Oggetto Folder simile
* alla casella di posta elettronica
*/
private Folder folder;
/**
* Oggetto messaggio
*/
private Message messaggio;
/**
* Array di messaggi contenuti in quel folder
*/
private Message[] elencoMessaggio;
/**
* Indirizzo mittente
*/
private InternetAddress daChi;
/**
* Indirizzo destinatario
*/
private InternetAddress aChi;
/**
* Oggetto stringa
* contenete l'indirizzo
* del mittente
*/
private String da;
/**
* Costruttore della classe
*/
public ReceiveEMail( ) {
prop = System.getProperties();
sessione = Session.getDefaultInstance( prop, null );
}
/**
* Metodo che si occupa di settare lo Sotre in base a:
* 1) tipo di protocollo ( Se POP3 o IMAP )
* 2) l'host cui connettersi
* 3) l'username
* 4) la password
* @param provider -specifica se s i usa POP3 oppure IMAP o qualsiasi altro
* @param host -l'host cui connettersi
* @param userName -l'username del client
* @param password -la password del client
*/
private void setStore( String provider, String host, String userName, String password ){
try {
conserva = sessione.getStore( provider );
conserva.connect( host, userName, password );
}
catch (NoSuchProviderException ex) {
ex.printStackTrace();
}
catch( MessagingException me ){
me.printStackTrace();
}
}
/**
* Metodo che si occupa di leggere l'email
* @param provider -specifica se s i usa POP3 oppure IMAP o qualsiasi altro
* @param host -l'host cui connettersi
* @param userName -l'username del client
* @param password -la password del client
*/
public void readEmail( String provider,String host, String userName, String password ){
this.setStore( provider, host, userName, password );
try {
this.folder = conserva.getDefaultFolder();
}
catch (MessagingException ex) {
folder = null;
System.out.println ( ex.getMessage() );
}
if( folder != null ){
try {
folder = folder.getFolder("INBOX");
}
catch (MessagingException ex1) {
folder = null;
System.out.println ( ex1.getMessage() );
}
if( folder != null ){
try {
folder.open( Folder.READ_ONLY );
elencoMessaggio = folder.getMessages();
for( int i = 0; i < elencoMessaggio.length; i++ ){
this.daChi = ( InternetAddress )( elencoMessaggio[ i ].getFrom()[ 0 ] );
this.da = daChi.getPersonal();
if( da == null ){
da = daChi.toString();
}
System.out.println( "Nuovo messaggio DA:"+ da+" OGGETTO: "+elencoMessaggio[i].getSubject()+" DATA INVIO: "+elencoMessaggio[i].getSentDate()+" DIMENSIONI: "+ this.calcolaKBytes( elencoMessaggio[i].getSize() ) );
}
folder.close( false );
}
catch (MessagingException ex2) {
System.err.println( ex2.getMessage() );
}
}else{
System.out.println( "Folder INBOX non individuato" );
}
}else{
System.out.println( "Folder di default non trovato" );
}
}
/**
* Metodo che converte l'intero contenente la dimensione in byte
* del messaggio in una stringa con i simboli
* 1) B ( se la dimensione del messaggio è inferiore a 1000 )
* 2) KB( se maggiore o uguale a 1000 )
* @param bytes dimensione in bytes del messaggio
* @return la stringa risultante dall'elaborazione
*/
private String calcolaKBytes( int bytes ){
String result = "";
if( bytes < 1000 ){
result = bytes + "B";
}else{
float divisione = ( float )( bytes/1000 );
result = divisione + "KB";
}
return result;
}
}
Io non le provo da un bel po' di tempo ma mi ricordo con sicurezza che funzionavano.
Ciao