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 036 public static final void printMessageInfo(BufferedReader reader, int id) 037 throws IOException 038 { 039 String line, lower, from, subject; 040 041 from = ""; 042 subject = ""; 043 044 while ((line = reader.readLine()) != null) 045 { 046 lower = line.toLowerCase(); 047 if (lower.startsWith("from: ")) 048 from = line.substring(6).trim(); 049 else if (lower.startsWith("subject: ")) 050 subject = line.substring(9).trim(); 051 } 052 053 System.out.println(Integer.toString(id) + " From: " + from + 054 " Subject: " + subject); 055 } 056 057 public static final void main(String[] args) 058 { 059 int message; 060 String server, username, password; 061 POP3Client pop3; 062 Reader reader; 063 POP3MessageInfo[] messages; 064 065 if (args.length < 3) 066 { 067 System.err.println( 068 "Usage: messages <pop3 server hostname> <username> <password>"); 069 System.exit(1); 070 } 071 072 server = args[0]; 073 username = args[1]; 074 password = args[2]; 075 076 pop3 = new POP3Client(); 077 // We want to timeout if a response takes longer than 60 seconds 078 pop3.setDefaultTimeout(60000); 079 080 try 081 { 082 pop3.connect(server); 083 } 084 catch (IOException e) 085 { 086 System.err.println("Could not connect to server."); 087 e.printStackTrace(); 088 System.exit(1); 089 } 090 091 try 092 { 093 if (!pop3.login(username, password)) 094 { 095 System.err.println("Could not login to server. Check password."); 096 pop3.disconnect(); 097 System.exit(1); 098 } 099 100 messages = pop3.listMessages(); 101 102 if (messages == null) 103 { 104 System.err.println("Could not retrieve message list."); 105 pop3.disconnect(); 106 System.exit(1); 107 } 108 else if (messages.length == 0) 109 { 110 System.out.println("No messages"); 111 pop3.logout(); 112 pop3.disconnect(); 113 System.exit(1); 114 } 115 116 for (message = 0; message < messages.length; message++) 117 { 118 reader = pop3.retrieveMessageTop(messages[message].number, 0); 119 120 if (reader == null) 121 { 122 System.err.println("Could not retrieve message header."); 123 pop3.disconnect(); 124 System.exit(1); 125 } 126 127 printMessageInfo(new BufferedReader(reader), messages[message].number); 128 } 129 130 pop3.logout(); 131 pop3.disconnect(); 132 } 133 catch (IOException e) 134 { 135 e.printStackTrace(); 136 System.exit(1); 137 } 138 } 139 } 140