In another example you’ve seen how to send email using Gmail SMTP via TLS. See the following example How do I send email using Gmail via TLS?.
In this example you will use the SSL connection to connect to Gmail SMTP server. The difference with this is in the properties / configuration that we used to create the mail session object.
package org.kodejava.mail;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Date;
import java.util.Properties;
public class GmailSendEmailSSL {
private static final String USERNAME = "[email protected]";
private static final String PASSWORD = "password";
public static void main(String[] args) throws Exception {
// Email information such as from, to, subject and contents.
String mailFrom = "[email protected]";
String mailTo = "[email protected]";
String mailSubject = "SSL - Gmail Send Email Demo";
String mailText = "SSL - Gmail Send Email Demo";
GmailSendEmailSSL gmail = new GmailSendEmailSSL();
gmail.sendMail(mailFrom, mailTo, mailSubject, mailText);
}
private void sendMail(String mailFrom, String mailTo, String mailSubject,
String mailText) throws Exception {
Properties config = createConfiguration();
// Creates a mail session. We need to supply username and
// password for Gmail authentication.
Session session = Session.getInstance(config, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
GmailSendEmailSSL.USERNAME,
GmailSendEmailSSL.PASSWORD
);
}
});
// Creates email message
Message message = new MimeMessage(session);
message.setSentDate(new Date());
message.setFrom(new InternetAddress(mailFrom));
message.setRecipient(Message.RecipientType.TO, new InternetAddress(mailTo));
message.setSubject(mailSubject);
message.setText(mailText);
// Send a message
Transport.send(message);
}
private Properties createConfiguration() {
return new Properties() {{
put("mail.smtp.host", "smtp.gmail.com");
put("mail.smtp.auth", "true");
put("mail.smtp.port", "465");
put("mail.smtp.socketFactory.port", "465");
put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
put("mail.smtp.ssl.protocols", "TLSv1.2");
}};
}
}
There is a chance that you can get an error that tell you cannot connect to the smtp.gmail.com
port 465
. If this is the case please check your connection to the server using telnet command. The command is telnet smtp.gmail.com 465
, and see if there is a reply.
Maven Dependencies
<dependencies>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.5.6</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
</dependencies>
Latest posts by Wayan (see all)
- How do I get number of each day for a certain month in Java? - September 8, 2024
- How do I get operating system process information using ProcessHandle? - July 22, 2024
- How do I sum a BigDecimal property of a list of objects using Java Stream API? - July 22, 2024
Hi Wayan,
I used the same code in my project but I always get an error as
I tried to
telnet smtp.gmail.com 465
, but there is no reply. Is there any solution for the same?Hi Shailesh,
If there’s no reply when you telnet to 465 it means the port is blocked in your network. You can try the other example that use TLS here: https://kodejava.org/how-do-i-send-email-using-gmail-via-tls/