第三讲的接收邮件情况跟发送邮件一样,首先建立Session,然后取得相对应的协议(pop/imap)的Store(代表了存储邮件的邮件服务器),在连接Store的过程中需要指定host,username,password,连接Store成功后会返回Folder对象,最后通过Folder对象的getMessages()方法获取邮件信息。在读取邮件内容后,别忘记了关闭Folder和Store。
folder.close(true);
store.close();
传递给Folder.close()方法的类型参数表示是否在删除操作邮件后更新Folder。
注意:在连接前检查自己的POP,IMAP邮件服务有没有打开。最好尝试一下 ping pop.qq.com如果有返回数据表证明服务器可以连接。
package com.mail;
2 /**
3 * 接收邮件
4 */
5 import java.util.Properties;
6
7 import javax.mail.Folder;
8 import javax.mail.Message;
9 import javax.mail.Session;
10 import javax.mail.Store;
11
12 public
class RevMail {
13
14
public static
void main(String[] args)
throws Exception {
15 Properties props
= new Properties();
16 Session session
= Session.getDefaultInstance(props);
17 // Store store = session.getStore("imap");
18
//取得pop3协议的邮件服务器
19 Store store
= session.getStore("pop3");
20
//连接pop.qq.com邮件服务器
21 store.connect("pop.qq.com",
"343820302@qq.com",
"********");
22
//返回文件夹对象
23 Folder folder
= store.getFolder("INBOX");
24
//设置仅读
25 folder.open(Folder.READ_ONLY);
26
//获取信息
27 Message message[]
= folder.getMessages();
28
for(int i=message.length-1;
i>0; i--) {
29
//打印主题
30 System.out.println(message[i].getSubject());
31 System.out.println("-----------------------------------------");
32 }
33 folder.close(true);
34 store.close();
35
36
37 }
38 }
PS:如果用imap连接,请用这段代码Store store = session.getStore("imap"); store.connect("imap.qq.com", "343820302@qq.com", "*********");
有些邮件服务器不支持imap协议的,请大家注意