Share this page 

Send email with SMTPS (eg. Google GMail) (Javamail)Tag(s): Networking


It's not uncommon that the outgoing mail needs to be encrypted using the SMTPS protocol.

It's the case for GMail for example.

You need Javamail 1.4 to use the SMTPS protocol.

import javax.mail.*;
import javax.mail.internet.*;

import java.util.Properties;


public class SimpleSSLMail {

    private static final String SMTP_HOST_NAME = "smtp.gmail.com";
    private static final int SMTP_HOST_PORT = 465;
    private static final String SMTP_AUTH_USER = "myaccount@gmail.com";
    private static final String SMTP_AUTH_PWD  = "mypwd";

    public static void main(String[] args) throws Exception{
       new SimpleSSLMail().test();
    }

    public void test() throws Exception{
        Properties props = new Properties();

        props.put("mail.transport.protocol", "smtps");
        props.put("mail.smtps.host", SMTP_HOST_NAME);
        props.put("mail.smtps.auth", "true");
        // props.put("mail.smtps.quitwait", "false");

        Session mailSession = Session.getDefaultInstance(props);
        mailSession.setDebug(true);
        Transport transport = mailSession.getTransport();

        MimeMessage message = new MimeMessage(mailSession);
        message.setSubject("Testing SMTP-SSL");
        message.setContent("This is a test", "text/plain");

        message.addRecipient(Message.RecipientType.TO,
             new InternetAddress("elvis@presley.org"));

        transport.connect
          (SMTP_HOST_NAME, SMTP_HOST_PORT, SMTP_AUTH_USER, SMTP_AUTH_PWD);

        transport.sendMessage(message,
            message.getRecipients(Message.RecipientType.TO));
        transport.close();
    }
}

Even you send to correct credentials, it's possible that you get the javax.mail.AuthenticationFailedException exception from Gmail. If it's the case, you may need to explicitly enable "less secure apps" setting in your Gmail account, see https://support.google.com/accounts/answer/6010255>Answer from Google.
Settings for well known mail providers
Yahoo
Incoming Mail Server - pop.mail.yahoo.com (POP3 - port 110)
Outgoing Mail Server - smtp.mail.yahoo.com (SMPTP - port 25)
Google GMail
Incoming Mail Server - pop.gmail.com (POP3S SSL enabled, port 995)
Outgoing Mail Server - gmail.com (SMPTS SSL enabled, port 465)