使用JavaMail接收邮件的示例

时间:2021-08-17 19:03:32
String pop3Server = "服务器地址";
String protocol = "pop3";
String username = "用户名";
String password = "密码";
Properties prop = new Properties();
prop.setProperty("mail.store.protocol", protocol);
prop.setProperty("mail.pop3.host", pop3Server);
Session mailSession = Session.getDefaultInstance(prop);
Store store = mailSession.getStore();
store.connect(pop3Server, username, password);
Folder folder = store.getFolder("inbox"); // pop3类型 inbox文件夹
folder.open(Folder.READ_ONLY);
System.out.println(folder.getMessageCount()); // 正常的话,会得到正确的数值


前天在宿舍,使用这段代码获取新浪邮箱的邮件,一切正常,今天早上在公司的电脑上跑,一直返回0,原以为是服务器端做了什么设置,限制了代码获取之类的。心灰意冷之际想到pop3和imap两个协议不是很清楚区别,就去看了下,这才知道原来pop3协议在客户端获取邮件之后服务器端不再保存(有些可以设置为服务器端保存副本),而我的outlook客户端设置了每分钟获取一次,而且每次往自己邮箱发送新邮件进行测试时,都有手动刷新确认新邮件到达的操作,进而导致服务器端一直在重复“接收新邮件,下载到客户端,删除新邮件”,也理所当然地代码会一直返回0!所以说,学习使用API,不只是知道API就行,必要的背景知识还是很重要的!