support host port; allow reading password from Console/stdin/environment
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/net/trunk@1753207 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0b9fda9..c47ed76 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -64,6 +64,9 @@
<body>
<release version="3.6" date="TBA" description="">
+ <action type="update" dev="sebb">
+ POP3Mail example: support host port; allow reading password from Console/stdin/environment
+ </action>
<action issue="NET-597" type="fix" dev="sebb" due-to="Hiroki Taniura">
FTP fails to parse listings for Solaris 10 FTPd in Japanese
</action>
diff --git a/src/main/java/examples/mail/POP3Mail.java b/src/main/java/examples/mail/POP3Mail.java
index fb7bd71..0b25520 100644
--- a/src/main/java/examples/mail/POP3Mail.java
+++ b/src/main/java/examples/mail/POP3Mail.java
@@ -60,13 +60,21 @@
if (args.length < 3)
{
System.err.println(
- "Usage: POP3Mail <pop3 server hostname> <username> <password> [TLS [true=implicit]]");
+ "Usage: POP3Mail <server[:port]> <username> <password|-|*|VARNAME> [TLS [true=implicit]]");
System.exit(1);
}
- String server = args[0];
+ String arg0[] = args[0].split(":");
+ String server=arg0[0];
String username = args[1];
String password = args[2];
+ // prompt for the password if necessary
+ try {
+ password = Utils.getPassword(username, password);
+ } catch (IOException e1) {
+ System.err.println("Could not retrieve password: " + e1.getMessage());
+ return;
+ }
String proto = args.length > 3 ? args[3] : null;
boolean implicit = args.length > 4 ? Boolean.parseBoolean(args[4]) : false;
@@ -79,7 +87,14 @@
} else {
pop3 = new POP3Client();
}
- System.out.println("Connecting to server "+server+" on "+pop3.getDefaultPort());
+
+ int port;
+ if (arg0.length == 2) {
+ port = Integer.parseInt(arg0[1]);
+ } else {
+ port = pop3.getDefaultPort();
+ }
+ System.out.println("Connecting to server "+server+" on "+port);
// We want to timeout if a response takes longer than 60 seconds
pop3.setDefaultTimeout(60000);
@@ -95,7 +110,7 @@
{
System.err.println("Could not connect to server.");
e.printStackTrace();
- System.exit(1);
+ return;
}
try
@@ -104,14 +119,25 @@
{
System.err.println("Could not login to server. Check password.");
pop3.disconnect();
- System.exit(1);
+ return;
}
+ POP3MessageInfo status = pop3.status();
+ if (status == null) {
+ System.err.println("Could not retrieve status.");
+ pop3.logout();
+ pop3.disconnect();
+ return;
+ }
+
+ System.out.println("Status: " + status);
+
POP3MessageInfo[] messages = pop3.listMessages();
if (messages == null)
{
System.err.println("Could not retrieve message list.");
+ pop3.logout();
pop3.disconnect();
return;
}
@@ -123,13 +149,16 @@
return;
}
+ System.out.println("Message count: " + messages.length);
+
for (POP3MessageInfo msginfo : messages) {
BufferedReader reader = (BufferedReader) pop3.retrieveMessageTop(msginfo.number, 0);
if (reader == null) {
System.err.println("Could not retrieve message header.");
+ pop3.logout();
pop3.disconnect();
- System.exit(1);
+ return;
}
printMessageInfo(reader, msginfo.number);
}