Example usage for org.apache.commons.net.pop3 POP3Client setDefaultPort

List of usage examples for org.apache.commons.net.pop3 POP3Client setDefaultPort

Introduction

In this page you can find the example usage for org.apache.commons.net.pop3 POP3Client setDefaultPort.

Prototype

public void setDefaultPort(int port) 

Source Link

Document

Sets the default port the SocketClient should connect to when a port is not specified.

Usage

From source file:POP3Mail.java

public static void main(String[] args) {
    try {//from  www .  j  a v a  2s.c  o  m
        LogManager.getLogManager().readConfiguration(new FileInputStream("logging.properties"));
    } catch (Exception e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }
    String server = null;
    String username = null;
    String password = null;
    if (new File("mail.properties").exists()) {
        Properties properties = new Properties();
        try {
            properties.load(new FileInputStream(new File("mail.properties")));
            server = properties.getProperty("server");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            ArrayList<String> list = new ArrayList<String>(
                    Arrays.asList(new String[] { server, username, password }));
            list.addAll(Arrays.asList(args));
            args = list.toArray(new String[list.size()]);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    if (args.length < 3) {
        System.err
                .println("Usage: POP3Mail <pop3 server hostname> <username> <password> [TLS [true=implicit]]");
        System.exit(1);
    }

    server = args[0];
    username = args[1];
    password = args[2];
    String proto = null;
    int messageid = -1;
    boolean implicit = false;
    for (int i = 3; i < args.length; ++i) {
        if (args[i].equals("-m")) {
            i += 1;
            messageid = Integer.parseInt(args[i]);
        }
    }

    // String proto = args.length > 3 ? args[3] : null;
    // boolean implicit = args.length > 4 ? Boolean.parseBoolean(args[4])
    // : false;

    POP3Client pop3;

    if (proto != null) {
        System.out.println("Using secure protocol: " + proto);
        pop3 = new POP3SClient(proto, implicit);
    } else {
        pop3 = new POP3Client();
    }
    pop3.setDefaultPort(110);
    System.out.println("Connecting to server " + server + " on " + pop3.getDefaultPort());

    // We want to timeout if a response takes longer than 60 seconds
    pop3.setDefaultTimeout(60000);
    // suppress login details
    pop3.addProtocolCommandListener(new PrintCommandListener(new PrintWriter(System.out), true));

    try {
        pop3.connect(server);
    } catch (IOException e) {
        System.err.println("Could not connect to server.");
        e.printStackTrace();
        System.exit(1);
    }

    try {
        if (!pop3.login(username, password)) {
            System.err.println("Could not login to server.  Check password.");
            pop3.disconnect();
            System.exit(1);
        }
        PrintWriter printWriter = new PrintWriter(new FileWriter("messages.csv"), true);
        POP3MessageInfo[] messages = null;
        POP3MessageInfo[] identifiers = null;
        if (messageid == -1) {
            messages = pop3.listMessages();
            identifiers = pop3.listUniqueIdentifiers();
        } else {
            messages = new POP3MessageInfo[] { pop3.listMessage(messageid) };
        }
        if (messages == null) {
            System.err.println("Could not retrieve message list.");
            pop3.disconnect();
            return;
        } else if (messages.length == 0) {
            System.out.println("No messages");
            pop3.logout();
            pop3.disconnect();
            return;
        }
        new File("../json").mkdirs();
        int count = 0;
        for (POP3MessageInfo msginfo : messages) {
            if (msginfo.number != identifiers[count].number) {
                throw new RuntimeException();
            }
            msginfo.identifier = identifiers[count].identifier;
            BufferedReader reader = (BufferedReader) pop3.retrieveMessageTop(msginfo.number, 0);
            ++count;
            if (count % 100 == 0) {
                logger.finest(String.format("%d %s", msginfo.number, msginfo.identifier));
            }
            System.out.println(String.format("%d %s", msginfo.number, msginfo.identifier));
            if (reader == null) {
                System.err.println("Could not retrieve message header.");
                pop3.disconnect();
                System.exit(1);
            }
            if (printMessageInfo(reader, msginfo.number, printWriter)) {
            }
        }
        printWriter.close();
        pop3.logout();
        pop3.disconnect();
    } catch (IOException e) {
        e.printStackTrace();
        return;
    }
}

From source file:com.google.gerrit.server.mail.receive.Pop3MailReceiver.java

/**
 * handleEmails will open a connection to the mail server, remove emails where deletion is
 * pending, read new email and close the connection.
 *
 * @param async Determines if processing messages should happen asynchronous.
 *///from ww  w.  jav a  2 s.  co  m
@Override
public synchronized void handleEmails(boolean async) {
    POP3Client pop3;
    if (mailSettings.encryption != Encryption.NONE) {
        pop3 = new POP3SClient(mailSettings.encryption.name());
    } else {
        pop3 = new POP3Client();
    }
    if (mailSettings.port > 0) {
        pop3.setDefaultPort(mailSettings.port);
    }
    try {
        pop3.connect(mailSettings.host);
    } catch (IOException e) {
        log.error("Could not connect to POP3 email server", e);
        return;
    }
    try {
        try {
            if (!pop3.login(mailSettings.username, mailSettings.password)) {
                log.error("Could not login to POP3 email server. Check username and password");
                return;
            }
            try {
                POP3MessageInfo[] messages = pop3.listMessages();
                if (messages == null) {
                    log.error("Could not retrieve message list via POP3");
                    return;
                }
                log.info("Received " + messages.length + " messages via POP3");
                // Fetch messages
                List<MailMessage> mailMessages = new ArrayList<>();
                for (POP3MessageInfo msginfo : messages) {
                    if (msginfo == null) {
                        // Message was deleted
                        continue;
                    }
                    try (BufferedReader reader = (BufferedReader) pop3.retrieveMessage(msginfo.number)) {
                        if (reader == null) {
                            log.error("Could not retrieve POP3 message header for message {}",
                                    msginfo.identifier);
                            return;
                        }
                        int[] message = fetchMessage(reader);
                        MailMessage mailMessage = RawMailParser.parse(message);
                        // Delete messages where deletion is pending. This requires
                        // knowing the integer message ID of the email. We therefore parse
                        // the message first and extract the Message-ID specified in RFC
                        // 822 and delete the message if deletion is pending.
                        if (pendingDeletion.contains(mailMessage.id())) {
                            if (pop3.deleteMessage(msginfo.number)) {
                                pendingDeletion.remove(mailMessage.id());
                            } else {
                                log.error("Could not delete message " + msginfo.number);
                            }
                        } else {
                            // Process message further
                            mailMessages.add(mailMessage);
                        }
                    } catch (MailParsingException e) {
                        log.error("Could not parse message " + msginfo.number);
                    }
                }
                dispatchMailProcessor(mailMessages, async);
            } finally {
                pop3.logout();
            }
        } finally {
            pop3.disconnect();
        }
    } catch (IOException e) {
        log.error("Error while issuing POP3 command", e);
    }
}