1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.commons.net.examples.mail;
19
20 import java.io.BufferedReader;
21 import java.io.IOException;
22 import java.io.PrintWriter;
23 import java.util.Locale;
24
25 import org.apache.commons.net.PrintCommandListener;
26 import org.apache.commons.net.pop3.POP3Client;
27 import org.apache.commons.net.pop3.POP3MessageInfo;
28 import org.apache.commons.net.pop3.POP3SClient;
29
30
31
32
33
34
35
36
37
38 public final class POP3Mail
39 {
40
41 public static void printMessageInfo(final BufferedReader reader, final int id) throws IOException {
42 String from = "";
43 String subject = "";
44 String line;
45 while ((line = reader.readLine()) != null)
46 {
47 final String lower = line.toLowerCase(Locale.ENGLISH);
48 if (lower.startsWith("from: ")) {
49 from = line.substring(6).trim();
50 } else if (lower.startsWith("subject: ")) {
51 subject = line.substring(9).trim();
52 }
53 }
54
55 System.out.println(Integer.toString(id) + " From: " + from + " Subject: " + subject);
56 }
57
58 public static void main(final String[] args)
59 {
60 if (args.length < 3)
61 {
62 System.err.println(
63 "Usage: POP3Mail <server[:port]> <username> <password|-|*|VARNAME> [TLS [true=implicit]]");
64 System.exit(1);
65 }
66
67 final String arg0[] = args[0].split(":");
68 final String server=arg0[0];
69 final String username = args[1];
70 String password = args[2];
71
72 try {
73 password = Utils.getPassword(username, password);
74 } catch (final IOException e1) {
75 System.err.println("Could not retrieve password: " + e1.getMessage());
76 return;
77 }
78
79 final String proto = args.length > 3 ? args[3] : null;
80 final boolean implicit = args.length > 4 ? Boolean.parseBoolean(args[4]) : false;
81
82 final POP3Client pop3;
83
84 if (proto != null) {
85 System.out.println("Using secure protocol: "+proto);
86 pop3 = new POP3SClient(proto, implicit);
87 } else {
88 pop3 = new POP3Client();
89 }
90
91 final int port;
92 if (arg0.length == 2) {
93 port = Integer.parseInt(arg0[1]);
94 } else {
95 port = pop3.getDefaultPort();
96 }
97 System.out.println("Connecting to server "+server+" on "+port);
98
99
100 pop3.setDefaultTimeout(60000);
101
102
103 pop3.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));
104
105 try
106 {
107 pop3.connect(server);
108 }
109 catch (final IOException e)
110 {
111 System.err.println("Could not connect to server.");
112 e.printStackTrace();
113 return;
114 }
115
116 try
117 {
118 if (!pop3.login(username, password))
119 {
120 System.err.println("Could not login to server. Check password.");
121 pop3.disconnect();
122 return;
123 }
124
125 final POP3MessageInfo status = pop3.status();
126 if (status == null) {
127 System.err.println("Could not retrieve status.");
128 pop3.logout();
129 pop3.disconnect();
130 return;
131 }
132
133 System.out.println("Status: " + status);
134
135 final POP3MessageInfo[] messages = pop3.listMessages();
136
137 if (messages == null)
138 {
139 System.err.println("Could not retrieve message list.");
140 pop3.logout();
141 pop3.disconnect();
142 return;
143 }
144 else if (messages.length == 0)
145 {
146 System.out.println("No messages");
147 pop3.logout();
148 pop3.disconnect();
149 return;
150 }
151
152 System.out.println("Message count: " + messages.length);
153
154 for (final POP3MessageInfo msginfo : messages) {
155 final BufferedReader reader = (BufferedReader) pop3.retrieveMessageTop(msginfo.number, 0);
156
157 if (reader == null) {
158 System.err.println("Could not retrieve message header.");
159 pop3.logout();
160 pop3.disconnect();
161 return;
162 }
163 printMessageInfo(reader, msginfo.number);
164 }
165
166 pop3.logout();
167 pop3.disconnect();
168 }
169 catch (final IOException e)
170 {
171 e.printStackTrace();
172 return;
173 }
174 }
175 }
176