利用Apache commons net 包实现简单的POP3邮件

Apache commons net中,对邮件的处理是非常强悍的,因此可以自己做一些邮件方面的工作。搭建邮件服务器的事情相对比较麻烦,我们还是直接利用现成的邮件服务器来使用,比如通过QQ邮箱收一些邮件。

在使用这个之前,要确保自己有一个邮箱,并且知道这个邮箱的POP3服务协议地址,以及这个邮箱对应的用户名和密码。

利用net 包实现简单的POP3邮件代码如下:

package test.ffm83.commons.net.mail;

import java.io.BufferedReader;

import java.io.IOException;

import java.util.Locale;

import org.apache.commons.net.pop3.POP3Client;

import org.apache.commons.net.pop3.POP3MessageInfo;

public
class
EasyPOP3Mail {

public
static void

main(String[] args) {

POP3Clientpop3 = newPOP3Client();

try {

pop3.setDefaultPort(110);

// We want to timeout if a response takes longer than 60 seconds

pop3.setDefaultTimeout(60000);

pop3.connect("pop.qq.com");//QQ邮件~如果邮箱不可用,换一个可用的

// 输入你的QQ号作为名称 QQ密码作为邮箱密码

if (pop3.login("fanfangming","123456")){

POP3MessageInfo[]messages = pop3.listMessages();

if (messages ==
null)

{

System.err.println("Could not retrieve message list.");

pop3.disconnect();

return;

}

else
if
(messages.length== 0)

{

System.out.println("No messages");

pop3.logout();

pop3.disconnect();

return;

}

for (POP3MessageInfo msginfo : messages) {

BufferedReader reader =(BufferedReader) pop3.retrieveMessageTop(msginfo.number, 0);

if (reader ==
null) {

System.err.println("Could not retrieve message header.");

pop3.disconnect();

System.exit(1);

}

printMessageInfo(reader,msginfo.number);

}

pop3.logout();

pop3.disconnect();

}

}catch(Exception e) {

System.out.println("失败");

e.printStackTrace();

}

}

public
static final
void
printMessageInfo(BufferedReader reader, int id)
throws IOException {

String from = "";

String subject = "";

String line;

while ((line = reader.readLine()) !=
null)

{

Stringlower = line.toLowerCase(Locale.CHINESE);

if (lower.startsWith("from: ")) {

from = line.substring(6).trim();

else
if
(lower.startsWith("subject: ")){

subject =line.substring(9).trim();

}

}

System.out.println(Integer.toString(id) +
" From: "+ from +
" Subject: " + subject);

}

}

运行结果如下:

No messages

当前没有邮件。

时间: 2024-10-27 12:00:57

利用Apache commons net 包实现简单的POP3邮件的相关文章

Java 利用Apache Commons Net 实现 FTP文件上传下载

package woxingwosu; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Comparator;

apache commons lang包中的StringUtils

计算一个字符串某个字符的出现次数 a, 使用charAt方法截取之后,循环判断. b, 使用apache commons lang包中的StringUtils: int n = StringUtils.countMatches("ababababab", "a"); System.out.println(n); 如何使一个字符串重复N次. API提供了一个非常好的方法.String str = "ab"; String repeated = St

apache commons io包基本功能

1. http://jackyrong.iteye.com/blog/2153812 2. http://www.javacodegeeks.com/2014/10/apache-commons-io-tutorial.html 3. http://www.importnew.com/13715.html 4. http://www.cnblogs.com/younggun/p/3247261.html (misybing:Apache Commons IO 包下载后,将该jar包添加到Ecli

利用apache commons组件实现WEB应用跨多数据库

1.前言 在一些多数据库的环境中,有时候应用系统需要同时访问多个数据库,在流行的spring+hibernate等架构中,涉及要修改和调整的内容会比较多:如果直接用jdbc,那么代码里就要充斥很多的连接.关闭数据库.以及从数据库中进行循环取结果的代码,感觉总是不够优化. 利用apachecommons 组件下的DBCP,dbUtils也能够编写相对比较优雅一点的代码. 本文主要提供更思路和方法,代码存在不够优化,架构存在不够清晰的情况,请辩证的看. WEB应用涉及的东西有点多,写起来也挺繁琐的.

Apache Commons Lang包的常用方法总结

Java代码库 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Calendar; import java.util.Date; import java.util.Iterator; import org.ap

apache commons Java包简介

更多信息,请参考:http://commons.apache.org/ 一.Commons BeanUtils说明:针对Bean的一个工具集.由于Bean往往是有一堆get和set组成,所以BeanUtils也是在此基础上进行一些包装. 二.Commons CLI说明:这是一个处理命令的工具.比如main方法输入的string[]需要解析.你可以预先定义好参数的规则,然后就可以调用CLI来解析. 三.Commons Codec说明:这个工具是用来编码和解码的,包括Base64,URL,Sound

Apache commons exec 简介和简单ping命令方法调用实现

Apache commonsexec提供一些常用的方法用来执行外部进程.Apache commons exec库提供了监视狗Watchdog来设监视进程的执行超时,同时也还实现了同步和异步功能. Apache commonsexec涉及到多线程,比如新启动一个进程,Java中需要再开三个线程来处理进程的三个数据流,分别是标准输入,标准输出和错误输出. 需要使用该功能需要引入commons-exec-1.3.jar包,目前最新的版本为1.3版本. 在日常工作和生活中,我们经常需要用到网络,网络有时

Apache commons CLI介绍和简单应用

CLI 即Command Line Interface,也就是"命令行接口",它为Java 程序访问和解析命令行参数提供了一种统一的接口. apache Commons CLI为用户提供了一个解释命令行的API. 它在解释命令行时主要有三个状态,即:定义.解释和询问交互. 通过使用commons cli则可以很容易的访问参数,而不必去循环String[] args. 这个命令需要模拟命令行输入,可以将应用做成jar文件后输入命令行执行,也可以将命令行包装成参数执行. 在eclipse下

Apache commons chain简介和简单实现

apache commons chain 提供了对CoR模式的基础支持..CoR模式,是Chain of Responsebility的缩写.CommonsChain实现了Chain of Responsebility和Command模式,其中的Catalog + 配置文件的方式使得调用方和Command的实现方的耦合度大大的降低,提高了灵活性. 使用Apachecommons chain,需要将commons-chain.jar放入你的classpath,目前最新的版本是1.2. 从使用的角度