首页 > 代码库 > 利用Apache commons net 包实现简单的POP3邮件
利用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 classEasyPOP3Mail {
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 voidprintMessageInfo(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
当前没有邮件。
利用Apache commons net 包实现简单的POP3邮件