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
018package examples;
019
020import java.io.BufferedReader;
021import java.io.IOException;
022import java.io.Reader;
023import org.apache.commons.net.pop3.POP3Client;
024import 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 ***/
035public 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