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