I'm trying to send mail in Java, and I googled it I found some piece of code and I tried to run it but it gives me this exception:
javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 587;
nested exception is:
java.net.ConnectException: Connection timed out: connect
Here is my code:
public class SendMail {
public static void Send(String username, String email) {
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", true); // added this line
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.user", "username@gmail.com");
props.put("mail.smtp.password", "password");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", true);
Session session = Session.getInstance(props, null);
MimeMessage message = new MimeMessage(session);
System.out.println("Port: " + session.getProperty("mail.smtp.port"));
try {
InternetAddress from = new InternetAddress("username");
message.setSubject("Yes we can");
message.setFrom(from);
message.addRecipients(Message.RecipientType.TO, InternetAddress.parse(email));
Multipart multipart = new MimeMultipart("alternative");
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("your username :" + username);
multipart.addBodyPart(messageBodyPart);
messageBodyPart = new MimeBodyPart();
String htmlMessage = "Our html text";
messageBodyPart.setContent(htmlMessage, "text/html");
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", "username@gmail.com", "password");
System.out.println("Transport: " + transport.toString());
transport.sendMessage(message, message.getAllRecipients());
} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Here the configuration i use and it's ok for me
mail.from = myMail
mail.transport.protocol = smtp
mail.smtp.host = smtp.gmail.com
mail.smtp.timeout = 30000
mail.smtp.starttls.enable = true
mail.smtp.auth = true
mail.debug = false
and when i'm sending the message
Authenticator auth = new MailAuthenticator(myMail , myPass);
Session session = Session.getDefaultInstance(properties, auth);
Here's some Gmail settings which work for me:
//these are fed into the Properties object below:
mail.smtp.starttls.enable = true
mail.transport.protocol = smtp
mail.smtp.auth = true
and some Java:
Properties properties = ...
javax.mail.Session session = javax.mail.Session.getInstance(properties, null);
Transport transport = session.getTransport("smtp");
transport.connect("smtp.gmail.com", username, password);
This works for me.
public class SendEmail
{
public static void main(String [] args)
{
String to = "to@gmail.com";
String from = "from@gmail.com";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("mail.smtp.host", host);
Session session = Session.getDefaultInstance(properties);
try{
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,
new InternetAddress(to));
message.setSubject("Subject");
message.setText("Message");
Transport.send(message);
System.out.println("Message sent.");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.