Originariamente inviato da andbin
Ok, il che mi pare inequivocabile: richiede autenticazione.
Secondo la documentazione di JavaMail, visto che hai usato il send static di Transport allora la soluzione è: innanzitutto impostare la property
mail.smtp.auth a
"true" e poi implementare un javax.mail.Authenticator da passare all'altra versione di Session.getInstance.
Questo Authenticator è una semplice classe che devi estendere per ridefinire il metodo:
public PasswordAuthentication getPasswordAuthentication()
nel cui corpo basta istanziare e restituire un PasswordAuthentication con username e password.
La versione di getInstance è:
getInstance(Properties props, Authenticator authenticator)
ho fatto questo ora?
codice:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import javax.mail.Authenticator;
public class Invio {
public static void main(String[] args)
{
String to="prova@yahoo.it";
String from="prova@yahoo.it";
String host="smtp.mail.yahoo.com";
Properties props = new Properties();
props.put("mail.smtp.host",host);
props.put("mail.debug","true");
props.put("mail.smtp.auth","true");
Session session=Session.getInstance(props);
try {
Message msg=new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address ={new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("An Hello World e-mail!");
msg.setSentDate(new Date());
msg.setText("Hello world!");
Transport.send(msg);
}
catch (MessagingException mex) {
mex.printStackTrace();
}
}
}