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:

Spring Security and OpenID Connect
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Java Program to Implement the Hill Cypher
Transactions with Spring and JPA
Spring Boot with Multiple SQL Import Files
Java Program to implement Associate Array
Spring MVC Custom Validation
Giới thiệu Design Patterns
Từ khóa this và super trong Java
The Basics of Java Security
Deploy a Spring Boot WAR into a Tomcat Server
Compare Two JSON Objects with Jackson
Hướng dẫn Java Design Pattern – Observer
Java Program to Perform Postorder Non-Recursive Traversal of a Given Binary Tree
Java Program to Implement Attribute API
Java Program to find the maximum subarray sum O(n^2) time(naive method)
Refactoring Design Pattern với tính năng mới trong Java 8
Tìm hiểu cơ chế Lazy Evaluation của Stream trong Java 8
Java Program to Use Boruvka’s Algorithm to Find the Minimum Spanning Tree
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
An Intro to Spring Cloud Security
Quản lý bộ nhớ trong Java với Heap Space vs Stack
Java Program to Permute All Letters of an Input String
Java Program to Implement RenderingHints API
Simultaneous Spring WebClient Calls
Request Method Not Supported (405) in Spring
Base64 encoding và decoding trong Java 8
Returning Image/Media Data with Spring MVC
Java TreeMap vs HashMap
Java Program to Check Cycle in a Graph using Topological Sort
Hướng dẫn Java Design Pattern – Prototype
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)