Send an email using the SMTP protocol

SMTP is the protocol used to send an email.

import java.net.*;
import java.io.*;

public class SendVietMXMail {
 public static void main(String s[]) {
   //
   //  Send fake mail from Elvis Presley
   //
   //  SendVietMXMail [mail server] [recipient address]
   //               mail server can be hostname or IP address
   //
   //   ex.  SendVietMXMail mail.company.com myFriend@somewhere.vn
   //
   SendVietMXMail t = new SendVietMXMail();
   t.sendMail(s[0], s[1]);
 }

 public void sendMail(String mailServer, String recipient) {
   try {
      Socket s = new Socket(mailServer, 25);
      BufferedReader in = new BufferedReader
          (new InputStreamReader(s.getInputStream(), "8859_1"));
      BufferedWriter out = new BufferedWriter
          (new OutputStreamWriter(s.getOutputStream(), "8859_1"));

      send(in, out, "HELO theWorld");
      // warning : some mail server validate the sender address
      //           in the MAIL FROm command, put your real address here
      send(in, out, "MAIL FROM: <viet.mai@maixuanviet.com>");
      send(in, out, "RCPT TO: " + recipient);
      send(in, out, "DATA");
      send(out, "Subject: In the ghetto");
      send(out, "From: Viet Mai <viet.mai@maixuanviet.com>");
      send (out, "\n");
      // message body
      send(out, "I'm alive. Help me!");
      send(out, "\n.\n");
      send(in, out, "QUIT");
      s.close();
   }
   catch (Exception e) {
      e.printStackTrace();
   }
 }

 public void send(BufferedReader in, BufferedWriter out, String s) {
   try {
      out.write(s + "\n");
      out.flush();
      System.out.println(s);
      s = in.readLine();
      System.out.println(s);
   }
   catch (Exception e) {
      e.printStackTrace();
   }
 }

 public void send(BufferedWriter out, String s) {
   try {
      out.write(s + "\n");
      out.flush();
      System.out.println(s);
   }
   catch (Exception e) {
      e.printStackTrace();
   }
 }
}

Done! Happy Coding!

Related posts:

Java Program to implement Associate Array
JUnit 5 @Test Annotation
Java Program to Check Whether an Undirected Graph Contains a Eulerian Cycle
Debug a HttpURLConnection problem
Java Program to Implement IdentityHashMap API
Java Program to Check whether Undirected Graph is Connected using DFS
Java Program to Apply DFS to Perform the Topological Sorting of a Directed Acyclic Graph
Converting a List to String in Java
Spring REST with a Zuul Proxy
TreeSet và sử dụng Comparable, Comparator trong java
Phương thức tham chiếu trong Java 8 – Method References
Java Program to Find ith Largest Number from a Given List Using Order-Statistic Algorithm
Java Program to Implement Randomized Binary Search Tree
Java Program to Implement ConcurrentHashMap API
Java Program to Perform the Shaker Sort
Automatic Property Expansion with Spring Boot
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Spring Boot with Multiple SQL Import Files
Java Program to Print only Odd Numbered Levels of a Tree
Read an Outlook MSG file
Java Program to Implement Cartesian Tree
Configure a RestTemplate with RestTemplateBuilder
Java Program to Implement ArrayBlockingQueue API
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
Form Validation with AngularJS and Spring MVC
What is Thread-Safety and How to Achieve it?
Java Program to Implement Tarjan Algorithm
Dynamic Proxies in Java
Java – Combine Multiple Collections
Java – InputStream to Reader
Java Program to find the number of occurrences of a given number using Binary Search approach
Spring Security Remember Me