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:

A Guide to the Java ExecutorService
So sánh Array và ArrayList trong Java
Java Program to Apply Above-Below-on Test to Find the Position of a Point with respect to a Line
Java Program to Generate Randomized Sequence of Given Range of Numbers
Create a Custom Exception in Java
Validate email address exists or not by Java Code
Java Program to add two large numbers using Linked List
Java – Byte Array to Reader
Java Program to Implement Branch and Bound Method to Perform a Combinatorial Search
Java Program to Implement Interpolation Search Algorithm
Java Program to Find ith Largest Number from a Given List Using Order-Statistic Algorithm
Java Program to Implement Tarjan Algorithm
A Quick Guide to Spring Cloud Consul
Java 8 Stream findFirst() vs. findAny()
Java Program to Perform Inorder Recursive Traversal of a Given Binary Tree
Java Program to Implement Suffix Array
Concurrent Test Execution in Spring 5
Java Program to implement Dynamic Array
Auditing with JPA, Hibernate, and Spring Data JPA
Adding a Newline Character to a String in Java
Java Program to Check whether Graph is Biconnected
An Intro to Spring Cloud Contract
How to Replace Many if Statements in Java
Java Program to Implement Dijkstra’s Algorithm using Priority Queue
Hướng dẫn Java Design Pattern – Template Method
Java Program to Perform the Unique Factorization of a Given Number
LinkedHashSet trong java
Programmatic Transaction Management in Spring
Spring Data Java 8 Support
Overview of the java.util.concurrent
Spring Cloud AWS – Messaging Support
Class Loaders in Java