Send email with SMTPS (eg. Google GMail)

1. Send email with SMTPS

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("maixuanviet.com@gmail.com"));

        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.

2. 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)
GMail
– Incoming Mail Server – pop.gmail.com (POP3S SSL enabled, port 995)
– Outgoing Mail Server – gmail.com (SMPTS SSL enabled, port 465)

Done! Happy Coding!

Related posts:

Tiêu chuẩn coding trong Java (Coding Standards)
Spring Autowiring of Generic Types
Java Program to Perform String Matching Using String Library
Java Program to Generate Date Between Given Range
Spring Boot Integration Testing with Embedded MongoDB
Spring Boot - Exception Handling
Java Program to Implement Quick Sort Using Randomization
Java Program to Perform the Shaker Sort
Java Program to Compute Discrete Fourier Transform Using the Fast Fourier Transform Approach
Returning Image/Media Data with Spring MVC
Java Program to Implement Binary Heap
Java Program to Generate a Sequence of N Characters for a Given Specific Case
Hướng dẫn Java Design Pattern – Builder
Sử dụng CountDownLatch trong Java
Java Program to Find the Connected Components of an UnDirected Graph
Hướng dẫn Java Design Pattern – State
Recommended Package Structure of a Spring Boot Project
Java Scanner hasNext() vs. hasNextLine()
Working With Maps Using Streams
Hướng dẫn Java Design Pattern – DAO
Dynamic Proxies in Java
Mảng (Array) trong Java
Working with Tree Model Nodes in Jackson
Java Program to Implement Double Order Traversal of a Binary Tree
Java Program to Implement HashSet API
Inheritance and Composition (Is-a vs Has-a relationship) in Java
Rest Web service: Filter và Interceptor với Jersey 2.x (P2)
Java Program to Implement an Algorithm to Find the Global min Cut in a Graph
Java Program to Find Path Between Two Nodes in a Graph
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java Program to Implement Extended Euclid Algorithm
Java Program to Implement Bloom Filter