上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用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 }

控制台输出结果:

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

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

JavaMail入门第四篇 接收邮件相关推荐

  1. java邮件接收代码,JavaMail入门第四篇 接收邮件(示例代码)

    上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...

  2. java 读取邮件正文_JavaMail入门第五篇 解析邮件

    上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...

  3. 如何高效运作机器学习团队(机器学习入门第四篇)

    本文是机器学习入门教程的第四篇,前三篇分别是: 1.机器学习能为你的业务做什么?有些事情你肯定猜不到 2.关于机器学习算法 你需要了解的东西 3.如何开发机器学习模型? 我们已经讨论了开发机器学习模型 ...

  4. Avalonia跨平台入门第四篇之Popup在uos下问题

    上一篇简单玩耍了Popup,这不正当我洋洋自得的时候前线传来战报:你家伙做的效果在UOS下面有问题;然后直接发来一张捷报: 明明在乌班图和优麒麟都没啥问题,单单就你这个UOS牛,结果发现个神奇的特效: ...

  5. WPF入门第四篇 WPF模板

    WPF模板 1.ControlTemplate 上一篇已经试用过控件模板,我们知道WPF的控件都是继承自Control,在Control类中有一个Template属性,类型就是ControlTempl ...

  6. Android JNI入门第四篇——jni头文件分析

    转载请标明出处: http://blog.csdn.net/michael1112/article/details/56666407 江东橘子的博客 一. 首先写了java文件: public cla ...

  7. STL入门第四篇——唯美主义的杰作

    事态的发展有时候总会趋向极端,这在那些唯美主义者当中犹是如此.首先声明,我并不是一个唯美主义者,提供第二版程序的改进版,完全是为了让你更深刻的感受到STL的魅力所在.在看完第三版之后,你会强烈感受到这 ...

  8. R语言入门第四集 实验三:数据可视化

    R语言入门第四集 实验三:数据可视化 一.资源 [R语言]R语言数据可视化--东北大学大数据班R实训第三次作业 在r中rowsums_R语言初级教程(15): 矩阵(下篇) R语言环境变量的设置 环境 ...

  9. Linux入门第四集!Jar包的入门、使用、部署!怎么打Jar包?

    Linux入门第四集!Jar包的入门.使用.部署!怎么打Jar包? 一.首先要确保JDK8已经安装成功 Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64. ...

最新文章

  1. 腾讯获赔 475 万!首例“微信自动抢红包”不正当竞争案宣判
  2. netty5.0通过LineBasedFrameDecoder和StringDecoder解决粘包
  3. WTM系列视频教程:MVVM
  4. java 前置通知_spring aop中的前置通知
  5. oracle sql loop merge,Oracle之存储过程和MERGE INTO语句
  6. YellowBrick-聚类评估示例
  7. HUAWEI HiAI 3.0 分布式,瑜伽、开车还能这么玩......
  8. 编码原则1-单一职责原则
  9. 关于jq22.com网站访问不了的问题
  10. 【好文】敏捷中国十八年目睹之怪现状
  11. 计算机自动开机什么愿意,电脑自动开关机是什么原因 怎么解决呢
  12. 《17.Deep Pyramidal Residual Networks》
  13. BZOJ-1076: [SCOI2008]奖励关 (概率期望DP 未完待续)
  14. PE文件解析(1):Dos头与NT头
  15. 在linux安装pyrit
  16. python中最小公倍数函数_Python 最小公倍数算法
  17. Buiness Partner 名词解析
  18. 今日快讯: Veeam将以50亿美元被Insight Partners收购兼评SDS之未来
  19. yarn常用安装命令
  20. UE使用(UltraEdit)

热门文章

  1. 如何去除chrome最常访问的网页
  2. iOS开发 控件不能绑定拖动到视图ViewController连接的解决方法
  3. 小程序加入人脸识别_进口香料——强势加入小程序买卖平台出售
  4. webstrom命名改名 命令
  5. 动态切换数据库连接配置简单示例
  6. 利用Oracle内置分析函数进行高效统计汇总
  7. Discuz修改笔记-Discuz代码的使用
  8. struts2 action中result参数详解
  9. 深信服单点登入代理服务取AD
  10. (八)2005年我的第一次软件行业创业,烧掉30万、2年时间打水漂的惨痛教训