[Java] JavaMail 查询邮件
上两篇提到如何发送邮件:JavaMail 发送 html 格式、带附件的邮件, JavaMail 简单案例。本文再演示下,如何读取邮箱上的邮件。
邮件内容的数据格式种类比较多,用户直接阅读邮件比较常见,通过程序解读邮件比较少见,所以,本文的例子只演示读取邮件信封上的内容,例如邮件主题、发件人。若邮件内容是纯文本格式,也能直接读取。若邮件内容是非文本格式,可以通过分解获取到的 Message 继续解读,不过这种情况不在本文演示范围内。
CheckingMail, 查询邮件,根据提供的 pop3 服务器域名,邮箱账号,密码,查询该邮箱账号里面的邮件。只查看邮件主题,发件人,邮件内容类型,如果是纯文本内容,也会显示出现。注意点:如果 InternetAddress 的 personName 包含中文,直接调用 InternetAddress.toString() 会显示不正常,需要单独调用 InternetAddress 的 getPersonal() 提取发件人姓名,才能正常显示发件人姓名。
CheckingMailDemo, 演示邮件查询。
具体代码:
CheckingMail, 查询邮件。
import static java.lang.System.out;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.internet.InternetAddress; public class CheckingMail { private String username;
private String password;
private String host;
private String port = "995"; public CheckingMail(String host, String username, String password){
this.host = host;
this.username = username;
this.password = password;
} public void check() throws Exception{ Properties props = new Properties();
props.put("mail.pop3.host", host);
props.put("mail.pop3.port", port);
props.put("mail.pop3.stattls.enable", "true"); Session session = Session.getInstance(props,
new javax.mail.Authenticator(){
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}); Store store = session.getStore("pop3s");
store.connect(host, username, password); System.out.println(" connect completed "); Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY); Message[] messages = folder.getMessages(); System.out.println(" the number of message retrieved from mailbox : " + messages.length); for (int i = 0 ; i < messages.length; i++){
Message msg = messages[i];
InternetAddress address = (InternetAddress) msg.getFrom()[0];
out.println(" [ #" + i + " ] ");
out.println( "Subject : " + msg.getSubject());
out.println("From : " + address.getPersonal() + "<" + address.getAddress() + ">");
out.println("ContentType : " + msg.getContentType());
out.println("Content Detail : " + msg.getContent().toString());
out.println();
} out.println(" Eamil retrieved completely "); folder.close(false);
store.close();
}
}
CheckingMailDemo, 演示邮件查询。
public class CheckingMailDemo {
public static void main() {
try {
String host = "pop.163.com";
final String username = "yourUserName@163.com";
final String password = "yourPassword";
CheckingMail checkingMail = new CheckingMail(host, username, password);
checkingMail.check();
} catch (Exception e) {
e.printStackTrace();
}
}
}
参考资料
[Java] JavaMail 查询邮件的更多相关文章
- [Java] JavaMail 发送 html 格式、带附件的邮件
本案例演示发送 html 格式,可带附件的邮件发送.发送纯文本邮件的例子可参照上一篇博文JavaMail 简单案例. EmailHelper, Email 的帮助类,向帮助类提供 SMTP 服务器域名 ...
- Java 基于JavaMail的邮件发送
http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...
- 使用JavaMail创建邮件发送邮件
一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...
- JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件
一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...
- (转载)JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件
博客源地址:http://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封 ...
- java实现smtp邮件发送
一.准备工作 首先你需要已一个发送邮箱,一般的邮箱都有SMTP.POP3服务,比如QQ邮箱,登陆QQ邮箱开启SMTP服务,开启是服务器会提示你设置独立密码,这个密码是跟邮箱正常登陆的密码不同的,这个是 ...
- 基于JavaMail开发邮件发送器工具类
基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...
- 使用JavaMail创建邮件和发送邮件
参考https://www.cnblogs.com/xdp-gacl/p/4216311.html,写的真好,知识在于分享,备份留着看 一.RFC882文档简单说明 RFC882文档规定了如何编写一封 ...
- java实现简单邮件的发送以及常见问题
java实现简单邮件的发送以及常见问题 最近遇到个需求需要实现发送邮件的功能,以前做发送邮件功能都是有邮箱用户名密码,通过用户名密码连接对应的SMTP服务器来实现邮件的发送.但是这次用公司内部的邮箱, ...
随机推荐
- Linux字符串函数集
//Linux字符串函数集: 头文件:string.h 函数名: strstr 函数原型:extern char *strstr(char *str1, char *str2); 功能:找出str2字 ...
- Python进阶:函数式编程实例(附代码)
Python进阶:函数式编程实例(附代码) 上篇文章"几个小例子告诉你, 一行Python代码能干哪些事 -- 知乎专栏"中用到了一些列表解析.生成器.map.filter.lam ...
- java.lang.ClassCastException
是指类型转换出错 当前者的域小于后者的时候出现 譬如说:前者A是子类的对象,而后者B是父类的对象 若使用A = B;就会抛出java.lang.ClassCastException List<C ...
- 命令行命令mvn
在cmd命令行敲击mvn clean install 默认读取的maven配置文件是D:\software\apache-maven-3.2.1\conf\settings.xml 这个文件里面配置有 ...
- 使用WMI来连接远端计算机
1. wmi连接前提 利用wmi来连接远端计算机首先要具有远端计算机管理员的用户名和密码.如果计算机在域中的话,要有域管理员用户名和密码,或者是把域帐户加入本机管理员组中也可以. 2. 相关类的用法- ...
- Jquery 操作 select
1.判断select选项中 是否存在Value="paraValue"的Item $("#selectid option[@value='paraValue']" ...
- iOS之多线程开发NSThread、NSOperation、GCD
原文出处: 容芳志的博客 欢迎分享原创到伯乐头条 简介iOS有三种多线程编程的技术,分别是:(一)NSThread(二)Cocoa NSOperation(三)GCD(全称:Grand Centr ...
- 【USACO 2.1.5】海明码
[题目描述] 给出 N,B 和 D,要求找出 N 个由0或1组成的编码(1 <= N <= 64),每个编码有 B 位(1 <= B <= 8),使得两两编码之间至少有 D 个 ...
- socket (转,吴秦,http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html)
Linux Socket编程(不限Linux)2010-12-12 21:58 by 吴秦 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web ...
- Java简介(4)-关键字
abstract assert boolean break byte byte case catch char class const continue default do-while double ...