博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaMail入门第四篇 接收邮件
阅读量:5791 次
发布时间:2019-06-18

本文共 2340 字,大约阅读时间需要 7 分钟。

上一篇中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操作,在介绍这些类之前,我们先来了解下邮件接收API的体系结构,JavaMail API中定义了一个java.mail.Store类,它用于执行邮件的接收任务,我们在程序中调用这个类中的方法可以获取邮箱中的各个邮件夹的信息。JavaMail使用Folder对象表示邮件夹,通过Folder对象的方法可以获取邮件夹中的所有邮件信息,而我们知道邮件的信息可以使用Message对象来表示,Message类中就包含了操作邮件的各种方法了,例如获取邮件的发送者,主题,正文内容,发送时间等,它们工作关系如下:

1、从Session对象中获得实现了某种邮件发送协议的Store对象;

2、登录邮箱,连接上POP3或者IMAP4服务器;

3、调用Store的getFolder方法,获取邮箱中的某个邮件夹的Folder对象;

4、调用Folder对象中的getMessage或getMessages方法,获取邮件夹中的某一封邮件或者是所有邮件,每一封的邮件以一个Message对象返回。

接下来我们用以上类来接收邮件

1 import java.util.Properties; 2  3 import javax.mail.Address; 4 import javax.mail.Folder; 5 import javax.mail.Message; 6 import javax.mail.Session; 7 import javax.mail.Store; 8  9 class MailReceives {10     public static void main(String[] args) throws Exception {11         // 定义连接POP3服务器的属性信息12         String pop3Server = "pop.qq.com";13         String protocol = "pop3";14         String username = "123456@qq.com";15         String password = "****************"; // QQ邮箱的SMTP的授权码,16 17         Properties props = new Properties();18         props.setProperty("mail.transport.protocol", protocol); // 使用的协议(JavaMail规范要求)19         props.setProperty("mail.smtp.host", pop3Server); // 发件人的邮箱的 SMTP服务器地址20 21         // 获取连接22         Session session = Session.getDefaultInstance(props);23         session.setDebug(false);24 25         // 获取Store对象26         Store store = session.getStore(protocol);27         store.connect(pop3Server, username, password); // POP3服务器的登陆认证28 29         // 通过POP3协议获得Store对象调用这个方法时,邮件夹名称只能指定为"INBOX"30         Folder folder = store.getFolder("INBOX");// 获得用户的邮件帐户31         folder.open(Folder.READ_WRITE); // 设置对邮件帐户的访问权限32 33         Message[] messages = folder.getMessages();// 得到邮箱帐户中的所有邮件34 35         for (Message message : messages) {36             String subject = message.getSubject();// 获得邮件主题37             Address from = (Address) message.getFrom()[0];// 获得发送者地址38             System.out.println("邮件的主题为: " + subject + "\t发件人地址为: " + from);39             System.out.println("邮件的内容为:");40             message.writeTo(System.out);// 输出邮件内容到控制台41         }42 43         folder.close(false);// 关闭邮件夹对象44         store.close(); // 关闭连接对象45     }46 }

控制台输出结果:

可以看到控制台输出的是邮件的原始内容,还未被解析,所以需要经过解析才能阅读,下一篇将讲解如何解析邮件。

转载于:https://www.cnblogs.com/huangminwen/p/6096124.html

你可能感兴趣的文章
多线程-ReentrantLock
查看>>
数据结构之链表与哈希表
查看>>
IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求...
查看>>
http返回状态码含义
查看>>
响应式网站对百度友好关键
查看>>
洛谷P2179 骑行川藏
查看>>
(十八)js控制台方法
查看>>
VB关键字总结
查看>>
android代码生成jar包并混淆
查看>>
一个不错的vue项目
查看>>
屏蔽指定IP访问网站
查看>>
python学习 第一天
查看>>
根据毫秒数计算出当前的“年/月/日/时/分/秒/星期”并不是件容易的事
查看>>
python的图形模块PIL小记
查看>>
shell变量子串
查看>>
iOS的主要框架介绍 (转载)
查看>>
react报错this.setState is not a function
查看>>
poj 1183
查看>>
从根本解决跨域(nginx部署解决方案)
查看>>
javascript实现的一个信息提示的小功能/
查看>>