PDA

Visualizza la versione completa : [ JAVA ] Sapete drimi perchè questo errore?


Angelo1974
19-12-2003, 17:30
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 :p
Ciao :ciauz:

Angelo1974
21-12-2003, 16:44
Up!! :( :)

Loading