Salve a tutti![]()
Ho una domanda da fare; date uno sguardo a questa classe:
package com.angelo.send;
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: Angelo
* @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 = "xxxxxxx";
String psw = "xxxxxxx";
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( mySMTPHost );
se.sendMessaggio( "pincopallino@pinco.it", "mmmmmmmmmmmm", "ola", "ollllalala", true );
}
}
Volevo chiedervi... se il mio host smtp non richiede l'autorizzazione per inviare la mail, la mail viene inviata e tutto va bene ( infatti ho provato con l'host di tin.it ); al contrario se il mio host richiede l'autorizzazione, sebbene ponga a true il booleano e gli passi username e password corrette e gli faccia fare la connessione in maniera corretta, mi va in eccezione dicendo:
javax.mail.SendFailedException: Sending failed;
nested exception is:
javax.mail.SendFailedException: Invalid Addresses;
nested exception is:
javax.mail.SendFailedException: 503 This mail server requires authentication. Please check your mail client settings.
at javax.mail.Transport.send0(Transport.java:219)
at javax.mail.Transport.send(Transport.java:81)
at com.angelo.send.SendEMail.sendMessaggio(SendEMail. java:106)
at com.angelo.send.SendEMail.main(SendEMail.java:121)
Qualcuno sa dirmi perchè? Inoltre se rimanessi nello stesso dominio ( ad esempio da pinco@prova.it a prova@prova.it ) tutto va bene... non riesco a capire.. a meno che non ci sia un cambio di porta per uscire fuori dal dominio.
Grazie a tutti, scusate la poca chiarezza del messaggio ma è venerdì e lo sento molto![]()
Ciao![]()