001: /*
002: * Copyright 2001-2005 The Apache Software Foundation
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package examples;
017:
018: import java.io.BufferedReader;
019: import java.io.IOException;
020: import java.io.Reader;
021: import org.apache.commons.net.pop3.POP3Client;
022: import org.apache.commons.net.pop3.POP3MessageInfo;
023:
024: /***
025: * This is an example program demonstrating how to use the POP3Client class.
026: * This program connects to a POP3 server and retrieves the message
027: * headers of all the messages, printing the From: and Subject: header
028: * entries for each message.
029: * <p>
030: * Usage: messages <pop3 server hostname> <username> <password>
031: * <p>
032: ***/
033: public final class messages {
034:
035: public static final void printMessageInfo(BufferedReader reader,
036: int id) throws IOException {
037: String line, lower, from, subject;
038:
039: from = "";
040: subject = "";
041:
042: while ((line = reader.readLine()) != null) {
043: lower = line.toLowerCase();
044: if (lower.startsWith("from: "))
045: from = line.substring(6).trim();
046: else if (lower.startsWith("subject: "))
047: subject = line.substring(9).trim();
048: }
049:
050: System.out.println(Integer.toString(id) + " From: " + from
051: + " Subject: " + subject);
052: }
053:
054: public static final void main(String[] args) {
055: int message;
056: String server, username, password;
057: POP3Client pop3;
058: Reader reader;
059: POP3MessageInfo[] messages;
060:
061: if (args.length < 3) {
062: System.err
063: .println("Usage: messages <pop3 server hostname> <username> <password>");
064: System.exit(1);
065: }
066:
067: server = args[0];
068: username = args[1];
069: password = args[2];
070:
071: pop3 = new POP3Client();
072: // We want to timeout if a response takes longer than 60 seconds
073: pop3.setDefaultTimeout(60000);
074:
075: try {
076: pop3.connect(server);
077: } catch (IOException e) {
078: System.err.println("Could not connect to server.");
079: e.printStackTrace();
080: System.exit(1);
081: }
082:
083: try {
084: if (!pop3.login(username, password)) {
085: System.err
086: .println("Could not login to server. Check password.");
087: pop3.disconnect();
088: System.exit(1);
089: }
090:
091: messages = pop3.listMessages();
092:
093: if (messages == null) {
094: System.err.println("Could not retrieve message list.");
095: pop3.disconnect();
096: System.exit(1);
097: } else if (messages.length == 0) {
098: System.out.println("No messages");
099: pop3.logout();
100: pop3.disconnect();
101: System.exit(1);
102: }
103:
104: for (message = 0; message < messages.length; message++) {
105: reader = pop3.retrieveMessageTop(
106: messages[message].number, 0);
107:
108: if (reader == null) {
109: System.err
110: .println("Could not retrieve message header.");
111: pop3.disconnect();
112: System.exit(1);
113: }
114:
115: printMessageInfo(new BufferedReader(reader),
116: messages[message].number);
117: }
118:
119: pop3.logout();
120: pop3.disconnect();
121: } catch (IOException e) {
122: e.printStackTrace();
123: System.exit(1);
124: }
125: }
126: }
|