java邮件接收代码,JavaMail入门第四篇 接收邮件(示例代码)
上一篇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 = "[email protected]";
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 + "发件人地址为: " + from);
39 System.out.println("邮件的内容为:");
40 message.writeTo(System.out);// 输出邮件内容到控制台
41 }
42
43 folder.close(false);// 关闭邮件夹对象
44 store.close(); // 关闭连接对象
45 }
46 }
控制台输出结果:
可以看到控制台输出的是邮件的原始内容,还未被解析,所以需要经过解析才能阅读,下一篇JavaMail入门第五篇 解析邮件将讲解如何解析邮件。
java邮件接收代码,JavaMail入门第四篇 接收邮件(示例代码)相关推荐
- JavaMail入门第四篇 接收邮件
上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...
- java 读取邮件正文_JavaMail入门第五篇 解析邮件
上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类 ...
- JAVA锁之可重入锁和递归锁及示例代码
概念:可重入锁 指的是同一线程外层函数获得锁之后,内层递归函数仍然能获取该锁的代码在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁也即是说,线程可以进入任何一个它已经拥有的锁所同步着的代 ...
- 如何高效运作机器学习团队(机器学习入门第四篇)
本文是机器学习入门教程的第四篇,前三篇分别是: 1.机器学习能为你的业务做什么?有些事情你肯定猜不到 2.关于机器学习算法 你需要了解的东西 3.如何开发机器学习模型? 我们已经讨论了开发机器学习模型 ...
- Android JNI入门第四篇——jni头文件分析
转载请标明出处: http://blog.csdn.net/michael1112/article/details/56666407 江东橘子的博客 一. 首先写了java文件: public cla ...
- Avalonia跨平台入门第四篇之Popup在uos下问题
上一篇简单玩耍了Popup,这不正当我洋洋自得的时候前线传来战报:你家伙做的效果在UOS下面有问题;然后直接发来一张捷报: 明明在乌班图和优麒麟都没啥问题,单单就你这个UOS牛,结果发现个神奇的特效: ...
- STL入门第四篇——唯美主义的杰作
事态的发展有时候总会趋向极端,这在那些唯美主义者当中犹是如此.首先声明,我并不是一个唯美主义者,提供第二版程序的改进版,完全是为了让你更深刻的感受到STL的魅力所在.在看完第三版之后,你会强烈感受到这 ...
- java script 6 折线_Java入门第六篇:Java script(js)的事件
[js中的事件分类] 1.鼠标事件 onclick.ondbclick.onmouseover.onmouseout 等 2.HTML事件: onload/onunload/onsubmit/onre ...
- WPF入门第四篇 WPF模板
WPF模板 1.ControlTemplate 上一篇已经试用过控件模板,我们知道WPF的控件都是继承自Control,在Control类中有一个Template属性,类型就是ControlTempl ...
最新文章
- attiny13a程序实例_ATtiny13A带A新版本
- Apache Prefork、Worker和Event三种MPM简单分析
- ALSA声卡12_从零编写之添加音量控制_学习笔记
- 网页开发部署-开发工具MyEclips+Tomcat+mysql
- 基于java SSM框架的旅游网站设计开发(含源文件)
- Python学习笔记:函数(Function)
- java xml二进制流传输_XML中二进制数据的处理方法
- Java性能优化的七个方向
- 四叶草引导linux教程,百科全书之黑苹果四叶草引导配置 boot讲解
- MXF视频文件损坏的修复方法
- 使用AndroidStudio开发一个简易的音乐播放器
- mysql中文表头转为英文字名_中文名字转换英文名字
- 渗透测试学习笔记之案例一
- SOLD2算法详解之1 backbone(CVPR2021 源码解析)
- 5 个市值较小的去中心化游戏
- 机械秒表的使用方法_秒表的使用方法!
- findContours函数报错:“将一个无效参数传递给了将无效参数视为严重错误的函数”解决方案
- 润叶在他最低沉的时候是谁在他的身边
- MIPI传输全局流程图
- 本地计算机上的mysql服务启动停止工作,本地服务开启MySQL57提示本地计算机上MySQL服务启动后停止。。。。...
热门文章
- Ascend Pytorch算子功能验证
- 目标检测推理部署:优化和部署
- 自动驾驶仿真分析,提高研发效率
- Nsight Compute Profilier 分析
- 将深度学习低延迟推理性能提高一倍
- 为什么UI线程中创建Handler可以不传Looper?
- mysql数据库是一个软件呐_15款好用的mysql管理软件
- Python 单下划线(“_“)与双下划线(“__“)以及以双下划线开头和结尾的的区别
- shell /dev/null
- Vue.js 源码目录设计(二)