Receive email by java client

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

public class DisplayMail {

  public static void main(String arg[]) {
       //
       //  usage :
       //  DisplayMail [mailServer] [user] [password]
       //     (will not delete mail on the server)
       //
       try {
         // connect on port 110 (POP3)
         System.out.println("Connect to " + arg[0] + ":110");
         Socket s = new Socket(arg[0], 110);
         BufferedReader in  = new BufferedReader(
             new InputStreamReader(s.getInputStream()));
         BufferedWriter out = new BufferedWriter(
             new OutputStreamWriter(s.getOutputStream()));
         DisplayMail mail = new DisplayMail();
         mail.login(in, out, arg[1], arg[2]);
         int i = mail.check(in,out);
         if (i==0) {
           System.out.println("No mail waiting.");
         }
         else {
           for (int j=1; j <= i; j++) {
              String msg = mail.get(in, out, j);
              System.out.println("*****");
              System.out.println(msg);
              System.out.println("*****");
           }
           //
           // If the mail was removed from the server
           // (see getMail()) then we must COMMIT with
           // the "QUIT" command :
           //   send(out, "QUIT");
           //
         }
       }
       catch (Exception e) {
         e.printStackTrace();
       }
    }

  public String get
       (BufferedReader in, BufferedWriter out, int i)
       throws IOException {
       String s = "";
       String t = "";
       send(out, "RETR "+i);
       while (((s = in.readLine()) != null)
           &&(!(s.equals(".")))) {
             t += s + "\n";
       }
       //
       // To remove the mail on the server :
       //   send(out, "DELE "+i);
       //   receive(in);
       //
       return t;
  }


  private void send(BufferedWriter out, String s)
    throws IOException {
       System.out.println(s);
       out.write(s+"\n");
       out.flush();
  }

  private String receive(BufferedReader in)
    throws IOException {
       String s =  in.readLine();
       System.out.println(s);
       return s;
  }

  private void login
    (BufferedReader in, BufferedWriter out, String user, String pass)
    throws IOException {
       receive(in);
       send(out, "HELO theWorld");
       receive(in);
       send(out, "USER " + user);
       receive(in);
       send(out, "PASS " + pass);
       receive(in);
  }

  private int check
     (BufferedReader in, BufferedWriter out)
      throws IOException {
      return getNumberOfMessages(in, out);
  }

  public int getNumberOfMessages
     (BufferedReader in, BufferedWriter out)
      throws IOException {
       int i = 0;
       String s;

       send(out, "LIST");
       receive(in);
       while((s = receive(in)) != null) {
          if (!(s.equals("."))) {
              i++;
          }
          else {
              return i;
          }
       }
       return 0;
  }
}

Done! Happy Coding!

Related posts:

Java Program to Implement Sorted Doubly Linked List
Custom Thread Pools In Java 8 Parallel Streams
Assert an Exception is Thrown in JUnit 4 and 5
Validate email address exists or not by Java Code
Java Program to Check if any Graph is Possible to be Constructed for a Given Degree Sequence
Spring MVC Custom Validation
Flattening Nested Collections in Java
Java Program to Solve a Matching Problem for a Given Specific Case
Java Program to Implement AttributeList API
Build a REST API with Spring and Java Config
Autoboxing và Unboxing trong Java
Java Program to Implement Euler Circuit Problem
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Java – File to Reader
Create a Custom Exception in Java
Java Program to Perform Uniform Binary Search
Java Program to Perform Right Rotation on a Binary Search Tree
Đồng bộ hóa các luồng trong Java
Java Program to Implement Direct Addressing Tables
Spring Boot: Customize Whitelabel Error Page
Send email with authentication
Java Program to Implement Traveling Salesman Problem using Nearest neighbour Algorithm
Generic Constructors in Java
Spring Cloud Bus
Java – Try with Resources
Java Program for Douglas-Peucker Algorithm Implementation
Tips for dealing with HTTP-related problems
Interface trong Java 8 – Default method và Static method
Cơ chế Upcasting và Downcasting trong java
Java Program to Construct an Expression Tree for an Prefix Expression
REST Web service: Basic Authentication trong Jersey 2.x
Java Program to Implement Hash Tree