此方法提供收件箱中的电子邮件数量。但是它给了我这个例外:
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");
}
答案 0 :(得分:3)
可能是因为服务器拒绝连接。
尝试从“telnet”连接。一旦你可以连接,那么你应该可以从你的Java程序连接。
以下是一些问题排查提示:
答案 1 :(得分:3)
试试这个:
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");
}
另请访问this question
答案 2 :(得分:1)
尝试更改
store.connect("pop.gmail.com" , "username" , "password");
到
store.connect("pop.gmail.com" , 995, "username" , "password");
免责声明:我没有对此进行测试。
Gmail需要安全的SSL连接,并且javax.mail.Service可能没有提供。我认为更可能的解释是,您只是没有连接到正确的端口,因此我明确指定了Gmail POP3服务的正确端口号。
答案 3 :(得分:1)
尝试按照“如何将gmail用作smtp服务器”tutorial。 Google还有一个configuration page,其中包含您需要的所有设置。