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:

Filtering and Transforming Collections in Guava
Comparing Arrays in Java
Java Program to Generate N Number of Passwords of Length M Each
Convert Time to Milliseconds in Java
Java Program to Represent Graph Using Adjacency Matrix
Guide to the Java Queue Interface
Java Program to Evaluate an Expression using Stacks
Java Program to Check whether Graph is a Bipartite using DFS
Java Program to Check Whether a Directed Graph Contains a Eulerian Path
A Guide to Apache Commons Collections CollectionUtils
Primitive Type Streams in Java 8
Java Program to Generate Random Partition out of a Given Set of Numbers or Characters
Java Program to Implement Euclid GCD Algorithm
Introduction to the Java NIO2 File API
Java Program to Implement Fenwick Tree
Spring Webflux with Kotlin
Quick Guide to java.lang.System
Java Program to Implement Fermat Primality Test Algorithm
Hướng dẫn Java Design Pattern – Facade
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Java Program to Check Whether an Undirected Graph Contains a Eulerian Path
Lập trình đa luồng với CompletableFuture trong Java 8
Spring Boot Configuration with Jasypt
Biểu thức Lambda trong Java 8 – Lambda Expressions
Java Program to Implement SimpeBindings API
Setting a Request Timeout for a Spring REST API
Java Program to Implement the Vigenere Cypher
Servlet 3 Async Support with Spring MVC and Spring Security
Spring MVC + Thymeleaf 3.0: New Features
Java Program to Check Whether a Directed Graph Contains a Eulerian Cycle
Using a Spring Cloud App Starter
Thực thi nhiều tác vụ cùng lúc như thế nào trong Java?