Почему я получаю это исключение? - PullRequest
2 голосов
/ 23 июля 2011

Этот метод дает количество электронных писем во входящей почте. Но это дает мне это исключение:

javax.mail.MessagingException: Connect failed;
 nested exception is:
java.net.ConnectException: Connection timed out: connecterror

-

 Session session = Session.getInstance(new Properties());
    try {
        Store store  = session.getStore("pop3");
        store.connect("pop.gmail.com" , "username" , "password");
        Folder fldr = store.getFolder("INBOX");
        fldr.open(Folder.READ_WRITE);
        int count = fldr.getMessageCount();
        System.out.println(count);
    } catch(Exception exc) {
        System.out.println(exc + "error");
    }    

Ответы [ 4 ]

3 голосов
/ 24 июля 2011

Попробуйте:

Properties props = new Properties();
props.put("mail.pop3.host" , "pop.gmail.com");
props.put("mail.pop3.user" , "username");
// Start SSL connection
props.put("mail.pop3.socketFactory" , 995 );
props.put("mail.pop3.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
props.put("mail.pop3.port" , 995);

Session session = Session.getDefaultInstance(props , new Authenticator() {
    @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication( "username" , "password");
            }
});
try {
    Store store  = session.getStore("pop3");
    store.connect("pop.gmail.com" , "username" , "password");
    Folder fldr = store.getFolder("INBOX");
    fldr.open(Folder.HOLDS_MESSAGES);
    int count = fldr.getMessageCount();
    System.out.println(count);
} catch(Exception exc) {
    System.out.println(exc + " error");
}

Также посетите этот вопрос

3 голосов
/ 23 июля 2011

Возможно, потому что сервер отказывается подключаться.

Попробуйте подключиться из "telnet". Как только вы сможете подключиться вообще, вы сможете подключиться из вашей Java-программы.

Вот несколько советов по устранению неполадок:

1 голос
/ 24 июля 2011

Попробуйте выполнить "Как использовать Gmail в качестве сервера SMTP" Учебное пособие . У Google также есть страница конфигурации со всеми необходимыми настройками.

1 голос
/ 24 июля 2011

Попробуйте изменить

store.connect("pop.gmail.com" , "username" , "password");

до

store.connect("pop.gmail.com" , 995, "username" , "password");

Отказ от ответственности: я не проверял это.

Gmail требует безопасного соединения SSL, и, возможно, javax.mail.Service этого не обеспечивает. Я думаю, что более вероятное объяснение состоит в том, что вы просто не подключаетесь к нужному порту, поэтому я явно указал правильный номер порта для службы POP3 в Gmail.

...