private void sendEmail(String mailServer, String subject, String to[],
String from, String messageText) throws AddressException, MessagingException
{
Properties mailProps= new Properties();
mailProps.put("mail.smtp.host", mailServer);
mailProps.put("mail.smtp.auth","true");
Session mailSession = Session.getDefaultInstance(mailProps, null);
int toCount = to.length;
InternetAddress[] toAddrs = new InternetAddress[toCount];
for (int i = 0; i < toCount; ++i){
toAddrs[i] = new InternetAddress(to[i]);
}
InternetAddress fromAddr = new InternetAddress(from);
Message message= new MimeMessage(mailSession);
message.setFrom(fromAddr);
message.setRecipients(Message.RecipientType.TO, toAddrs);
message.setSubject(subject);
message.setContent(messageText.toString(),"text/plain");
Transport trasporto = null;
trasporto = mailSession.getTransport("smtp");
trasporto.connect(mailserver,XXXX,YYYY); //nome server, utente e password
corretti
trasporto.sendMessage(message, message.getAllRecipients());
trasporto.close();
}
mi da questo errore
javax.mail.SendFailedException: Invalid Addresses; nested exception is:
javax.mail.SendFailedException: 550 5.7.1 ... Relaying denied. Proper
authentication required.
Perchč?
Tra l'altro se lo provo da casa, pur usando il mailserver online le mail
partono, ma se uploado il tutto questo č il messaggio che ottengo.
Adesso va.
Probabilmente era qualche ipostazione non aggiornata sul server.
sto provando ad utilizzare il package JavaMail, ed ho realizzato una
classe di prova.
Il codice è il seguente:
public sendMail() {
String smtpServer = new String("mail.libero.it");
String userId = new String("USERID");
String password = new String("PASSWORD");
Properties props = new Properties();
props.put("mail.smtp.host", smtpServer);
props.put("mail.smtp.auth","true");
Session session = Session.getDefaultInstance(props, null);
try {
InternetAddress to = new InternetAddress("TO_ADDRESS");
InternetAddress from = new InternetAddress("FROM_ADDRESS");
Message message= new MimeMessage(session);
message.setFrom(from);
message.setRecipient(Message.RecipientType.TO, to);
message.setSubject("Test JavaMail");
message.setContent("Ciao Mondo","text/plain");
Transport transport = null;
transport = session.getTransport("smtp");
transport.connect(smtpServer, userId, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
catch (AddressException a) {}
catch (MessagingException m) {}
}
Sul codice non dovrebbero esserci problemi, in quanto il compilatore
esegue la classe e non dà nessun messaggio d'errore, ma le mail non
arrivano e non riesco a capire dove sta il problema!
Come MailServer SMTP ho provato ad utilizzare quello di tin
("mail.tin.it") e quello di libero ("mail.libero.it").
Qualcuno ha avuto esperienze positive utilizzando JavaMail con questi
SMTP Server? Teoricamente dovrebbe funzionare con tutti i mail server
o perlomeno con la maggior parte
Grazie
Federico
per forza non dava messaggi d'errore, avevo lasciate vuote le clausole
catch.
Adesso il messaggio d'errore che manda è
javax.mail.NoSuchProviderException: No provider for Address type:
rfc822
at javax.mail.Session.getTransport(Session.java:516)
at javax.mail.Transport.send0(Transport.java:155)
at javax.mail.Transport.send(Transport.java:81)
at sendMail.sendMail.<init>(sendMail.java:43)
at sendMail.sendMail.main(sendMail.java:52)
Indicando quindi che non riesce a trovare il provider.
Adesso ci sbatto un pò la capoccia....
prova così
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SimpleSendMessage{
public static void main(String args[]){
String host="mail.libero.it";
String to= "use...@mail.it";
String from= "us...@libero.it";
String subject = "prova di invio mail!!";
String msg = " Sto inviando un messaggio con java mail";
boolean sessionDebug=false;
Properties props=System.getProperties();
props.put("mail.host",host);
props.put("mail.transport.protocol","smtp");
Session session = Session.getDefaultInstance(props,null);
session.setDebug(sessionDebug);
try{
Message mex=new MimeMessage(session);
mex.setFrom(new InternetAddress(from));
InternetAddress[] address={new InternetAddress(to)};
mex.setRecipients(Message.RecipientType.TO,address);
mex.setSubject(subject);
mex.setSentDate(new Date());
mex.setText(msg);
Transport.send(mex);
}catch(Exception e){}
}
}
DEBUG: getProvider() returning
javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun
Microsystems, Inc]
java.lang.reflect.InvocationTargetException
at
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at
java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at javax.mail.Session.getService(Session.java:607)
at javax.mail.Session.getTransport(Session.java:541)
at javax.mail.Session.getTransport(Session.java:484)
at javax.mail.Session.getTransport(Session.java:464)
at sendMail.sendMail.<init>(sendMail.java:43)
at sendMail.simpleSendMessage.main(simpleSendMessage.java:50)
Caused by: java.lang.NoSuchMethodError:
javax.mail.Session.getDebugOut()Ljava/io/PrintStream;
at
com.sun.mail.smtp.SMTPTransport.<init>(SMTPTransport.java:72)
... 10 more
javax.mail.NoSuchProviderException: smtp
at javax.mail.Session.getService(Session.java:611)
at javax.mail.Session.getTransport(Session.java:541)
at javax.mail.Session.getTransport(Session.java:484)
at javax.mail.Session.getTransport(Session.java:464)
at sendMail.sendMail.<init>(sendMail.java:43)
at sendMail.simpleSendMessage.main(simpleSendMessage.java:50)
Exception in thread "main"
COSA DIAVOLO POTRA' ESSERE MAI?!?!?!?