上两篇提到如何发送邮件: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 查询邮件的更多相关文章

  1. [Java] JavaMail 发送 html 格式、带附件的邮件

    本案例演示发送 html 格式,可带附件的邮件发送.发送纯文本邮件的例子可参照上一篇博文JavaMail 简单案例. EmailHelper, Email 的帮助类,向帮助类提供 SMTP 服务器域名 ...

  2. Java 基于JavaMail的邮件发送

    http://blog.csdn.net/xietansheng/article/details/51673073 http://blog.csdn.net/xietansheng/article/d ...

  3. 使用JavaMail创建邮件发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  4. JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封简单的邮件包含邮件头和邮件体两个部分,邮件头和邮件体之间使用空行分隔. 邮件头包含的内容有: from字段 ...

  5. (转载)JavaWeb学习总结(五十二)——使用JavaMail创建邮件和发送邮件

    博客源地址:http://www.cnblogs.com/xdp-gacl/p/4216311.html 一.RFC882文档简单说明 RFC882文档规定了如何编写一封简单的邮件(纯文本邮件),一封 ...

  6. java实现smtp邮件发送

    一.准备工作 首先你需要已一个发送邮箱,一般的邮箱都有SMTP.POP3服务,比如QQ邮箱,登陆QQ邮箱开启SMTP服务,开启是服务器会提示你设置独立密码,这个密码是跟邮箱正常登陆的密码不同的,这个是 ...

  7. 基于JavaMail开发邮件发送器工具类

    基于JavaMail开发邮件发送器工具类 在开发当中肯定会碰到利用Java调用邮件服务器的服务发送邮件的情况,比如账号激活.找回密码等功能.本人之前也碰到多次这样需求,为此特意将功能封装成一个简单易用 ...

  8. 使用JavaMail创建邮件和发送邮件

    参考https://www.cnblogs.com/xdp-gacl/p/4216311.html,写的真好,知识在于分享,备份留着看 一.RFC882文档简单说明 RFC882文档规定了如何编写一封 ...

  9. java实现简单邮件的发送以及常见问题

    java实现简单邮件的发送以及常见问题 最近遇到个需求需要实现发送邮件的功能,以前做发送邮件功能都是有邮箱用户名密码,通过用户名密码连接对应的SMTP服务器来实现邮件的发送.但是这次用公司内部的邮箱, ...

随机推荐

  1. 案例:计算1!+2!+3!+......+n!

    /* * 1!+2!+3!+......+n! * */ import java.util.Scanner; public class ForTest{ public static void main ...

  2. 加载MSCOMCTL.OCX错误处理的几个关键

    一.工程文件说明,两个版本Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCXObject={831FDD16-0C5C- ...

  3. webpack 配置 (支持 React SCSS ES6 编译打包 和 模块热更新 / 生成SourceMap)

    1.首先是目录结构 |-node_modules/ #包文件 |-build/ #静态资源生成目录 |-src/ #开发目录 |-js/ |-index.js #入口文件 |-app.js #Reac ...

  4. 5阻止A默认行为和JS实现页面跳转的方法

    <!--HTML中阻止A标签的默认行为: href="javascript:;" href="javascript:void 0;"--><! ...

  5. JAVA集合差异

    接口 简述 实现 操作特性 成员要求 Set 成员不能重复 HashSet 外部无序地遍历成员 成员可为任意Object子类的对象,但如果覆盖了equals方法,同时注意修改hashCode方法. T ...

  6. 初定为EGame

    [Q]在纠结到底要用什么方式写博客,是原生态记录框架编写过程(有点所谓的手把手教学的感觉有木有),还是每个模块整合完毕后写分析文章,新手没有写过博客,不知道那种效果好.朋友们给点建议? 这套框架的初衷 ...

  7. c - 字符串的反转

    1,递归实现 // 递归实现字符串反转(可通过栈的调用来加深理解). char * reverse(char *c) { if(!c) return NULL; int len = strlen(c) ...

  8. struts2与spring整合问题,访问struts2链接时,spring会负责创建Action

    每次访问一次链接,spring会创建一个对象,并将链接所带的参数注入到Action的变量中(如何做到的呐) 因为: struts2的action每次访问都重新创建一个对象,那spring的ioc是怎么 ...

  9. UIGestureRecognizer手势识别

    UIGestureRecognizer 1.#import "ViewController.h"2.3.@interface ViewController ()<UIGest ...

  10. Swift - 06 - 数值类型转换和类型别名

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...