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:
Jackson – Change Name of Field
Java Program to Find All Pairs Shortest Path
Serverless Functions with Spring Cloud Function
Jackson Annotation Examples
Java Program to Find kth Smallest Element by the Method of Partitioning the Array
Disable DNS caching
Multi Dimensional ArrayList in Java
Spring Boot Change Context Path
Handling URL Encoded Form Data in Spring REST
Spring Boot - Web Socket
Java – Random Long, Float, Integer and Double
Spring Boot - Bootstrapping
Converting between an Array and a List in Java
HttpClient Basic Authentication
Auditing with JPA, Hibernate, and Spring Data JPA
Spring Boot Annotations
How to Get All Spring-Managed Beans?
Debugging Reactive Streams in Java
So sánh HashMap và Hashtable trong Java
Spring Boot - Quick Start
Java Program to Implement RoleList API
JUnit5 Programmatic Extension Registration with @RegisterExtension
Remove the First Element from a List
Java Program to Implement Threaded Binary Tree
Database Migrations with Flyway
Spring Boot - Google OAuth2 Sign-In
Concrete Class in Java
Spring Boot: Customize the Jackson ObjectMapper
Java Program to implement Array Deque
RestTemplate Post Request with JSON
Java program to Implement Tree Set
Service Registration with Eureka