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 = "gvbrkikfckxgbeac";
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("邮件内容为:" + message.getContent());
40         }
41
42         folder.close(false);// 关闭邮件夹对象
43         store.close(); // 关闭连接对象
44     }
45 }

Message中的getContent方法用于返回邮件体的内容,该方法把邮件体内容作为一个Java对象返回,对象的类型由邮件体内容确定,当邮件内容的MIME类型为"text/plain"时,返回的是一个String对象,邮件内容是一个"multipart"类型时,返回的是一个Multipart的一个实现类,邮件内容的MIME类型不确定时,返回的是与内容相关联的InputStream流。

时间: 2024-08-20 10:51:57

JavaMail入门第四篇 接收邮件的相关文章

JavaMail入门第五篇 解析邮件

上一篇JavaMail入门第四篇 接收邮件中,控制台打印出的内容,我们无法阅读,其实,让我们自己来解析一封复杂的邮件是很不容易的,邮件里面格式.规范复杂得很.不过,我们所用的浏览器内置了解析各种数据类型的数据处理模块,我们只需要在把数据流传输给浏览器之前明确地指定该数据流属于哪种数据类型即可,之后一切的解析操作由浏览器自动帮我们完成.下面这张图可以很好的说明解析邮件的步骤 1.调用Message对象的getFrom.getSubject等方法,可以得到邮件的发件人和主题等信息,调用getCont

JavaMail入门第三篇 发送邮件

JavaMail API中定义了一个java.mail.Transport类,它专门用于执行邮件发送任务,这个类的实例对象封装了某种邮件发送协议的底层实施细节,应用程序调用这个类中的方法就可以把Message对象中封装的邮件数据发送到指定的SMTP服务器.使用JavaMail发送邮件时设计到的主要API之间的工作关系如下所示: 1.从Session对象中获得实现了某种邮件发送协议的Transport对象: 2.使用Session对象创建Message对象,并调用Message对象的方法封装邮件数

java入门第四步之应用服务器的安装(Tomcat)【转】

首先打开myeclipse,在myeclipse菜单栏下面有两个按钮: 左边的按钮是进行项目的部署的(即将项目部署到服务器上),右边的按钮是进行服务器的启动的,如果你安装了tomcat服务器,那你就可以在右边按钮点击的下拉框中 找到对应的服务器, 下面我来介绍下Tomcat服务器的安装(也不能叫安装,就是引入下): 点击菜单栏的Window---->选择Preferences----->在左边的菜单栏中选择MyEclipse---->servers----->tomcat 然后根据

CTF---密码学入门第四题 困在栅栏里的凯撒

困在栅栏里的凯撒分值:10 来源: 北邮天枢战队 难度:易 参与人数:4531人 Get Flag:2124人 答题人数:2285人 解题通过率:93% 小白发现了一段很6的字符:NlEyQd{seft} 解题链接: 原题链接:http://www.shiyanbar.com/ctf/1867 [解题报告] 这是我入门密码学开始写的第四道题,这道题有点意思,题目标题为困在栅栏里的凯撒,说明肯定是要用到栅栏密码和凯撒密码,所以我们先对这段字符进行暴力破解,这时我们可以用到一个工具,叫CTFCrac

python入门第1篇 python简介

一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所挚爱的电视剧Monty Python's Flying Circus.他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言. 最新的TIOBE排行榜,Python占据第4, Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言.

java入门第七篇-JQuery;

[JQuery语法] 1.使用Jquery必须先导入jquery.x.x.x.js文件 2.JQuery中的选择器: $("选择器名称").方法().($是JQuery的缩写,也就是说选择器可以是JQuery("选择器名称").方法().) present+ next:选定 present节点的下一个相邻节点. present~ next:选定present节点的后面全部兄弟节点. 3. jQuery中的文档就绪函数: $(document).ready(funct

JS笔记 入门第四

小测试: 注意:取消所有的设定可以直接使用 document.getElementById("txt").removeAttribute("style"); 这个是个神奇的东西. <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" Content="text/html; charset=utf-8" /> &

Html/Css(新手入门第三篇)

一.学习心得---参考优秀的网页来学习. 1我们只做的静态网页主要用的技术?html+css 只要网上看到的,他的源代码公开的.[1].先去分析,他们页面是如何布局(结构化)[2].再试着去做一下,---模仿过程.[3].最后我们可以自己尝试创新---通向高手的过程. css精灵技巧,优化网页的http请求次数,提高网页的效率.*****css精灵的核心思想,就是将多张图片,合成一张图片,然后通过背景属性中的定位来控制到底显示图片中的哪些部分.*****如果网页中能选中的图片,那肯定就是插入的图

Android JNI入门第六篇——C调用Java

本篇将介绍在JNI编程中C调用Java实现. 源码下载地址:http://download.csdn.net/detail/xyz_lmn/4868265 关键代码: java: [java] view plaincopyprint? public class CCallJava { public static String getTime() { Log.d("CCallJava",  "Call From C Java Static Method" +Strin