📄 emailreceiver.java
字号:
/*
* 创建日期: 2005-11-21
*
* 作 者: 王志晓 易龙软件
*/
package com.eeloo.javamail.sender;
import javax.mail.*;
import javax.mail.internet.*;
import sun.misc.BASE64Decoder;
import com.eeloo.javamail.sender.model.MessageBean;
import com.eeloo.util.StringUtil;
import com.eeloo.util.Util;
import com.sun.mail.util.BASE64DecoderStream;
import com.sun.mail.util.QDecoderStream;
import java.util.*;
import java.io.*;
/**
* 一个简单邮件接收类.
*/
public class EmailReceiver
{
private String unreadMessageCount ="";
//private MimeMessage mimeMessage = null;
private String saveAttachPath = ""; //附件下载后的存放目录
//private StringBuffer bodytext = new StringBuffer(); //存放邮件内容的StringBuffer对象
private String dateformat = "yy-MM-dd HH:mm"; //默认的日前显示格式
public String getUnreadMessageCount() {
return unreadMessageCount;
}
public void setUnreadMessageCount(String unreadMessageCount) {
this.unreadMessageCount = unreadMessageCount;
}
/**
* "receive" 方法接收消息并对它们进行处理
*/
public int getUnreadMessageCountInt(String popServer,String popUser,String popPassword,String flag)
{
Store store = null;
Folder folder = null;
ArrayList messageList = new ArrayList();
int unreadMessageCount=0;
try
{
// -- 得到缺省会话--
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
session.setDebug(true);
// -- 得到一个POP3消息存储设备并与它连接--
store = session.getStore("imap");
store.connect(popServer,popUser,popPassword);
// -- 得到缺省文件夹--
folder = store.getDefaultFolder();
if(folder == null)
{
throw new Exception("No default folder");
}
// -- ...以及收件箱 --
folder = folder.getFolder(flag);
if(folder == null)
{
throw new Exception("No POP3 INBOX");
}
// -- 以读写方式打开文件夹--
folder.open(Folder.READ_WRITE);
// -- 得到消息包并进行处理--
Message [] msgs = folder.getMessages();
unreadMessageCount = folder.getUnreadMessageCount();
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
// -- 注意关闭 --
try
{
if(folder != null)
{
folder.close(true);
}
if(store != null)
{
store.close();
}
}
catch(Exception ex2)
{
ex2.printStackTrace();
}
}
return unreadMessageCount;
}
/**
* Main 方法以便从用命令行参数指定的邮件服务器处接收消息
*/
public static void main(String args[])
{
try
{
String popServer = "eeloo.com";
String popUser = "wcb@eeloo.com";
String popPassword = "111111";
String flag = "receiveBox";
EmailReceiver re = new EmailReceiver();
re.createFolders(popServer,popUser,popPassword);
}
catch(Exception ex)
{
//java Receiver mail.EchoChina.net EchoChina@EchoChina.net Password
System.out.println("Usage: java Receiver" + " popServer popUser popPassword");
}
System.exit(0);
}
/**
* "create" 方法创建邮箱
*/
public void createFolders(String popServer,String popUser,String popPassword)
{
Store store = null;
Folder dfolder = null;
try
{
// -- 得到缺省会话--
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
session.setDebug(true);
// -- 得到一个POP3消息存储设备并与它连接--
store = session.getStore("imap");
store.connect(popServer,popUser,popPassword);
// 创建Trash、Sent、Drafts
dfolder = store.getFolder("INBOX.Trash");
if (!dfolder.exists())
dfolder.create(Folder.HOLDS_MESSAGES);
System.out.println(dfolder.getName() + " is created");
dfolder = store.getFolder("INBOX.Drafts");
if (!dfolder.exists())
dfolder.create(Folder.HOLDS_MESSAGES);
System.out.println(dfolder.getName() + " is created");
dfolder = store.getFolder("INBOX.Sent");
if (!dfolder.exists())
dfolder.create(Folder.HOLDS_MESSAGES);
System.out.println(dfolder.getName() + " is created");
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
// -- 注意关闭 --
try
{
if(store != null)
{
dfolder.close(false);
store.close();
}
}
catch(Exception ex2)
{
ex2.printStackTrace();
}
}
}
/**
* "receive" 方法接收消息并对它们进行处理
*/
public ArrayList receive(String popServer,String popUser,String popPassword,String flag)
{
Store store = null;
Folder folder = null;
ArrayList messageList = new ArrayList();
try
{
// -- 得到缺省会话--
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
session.setDebug(true);
// -- 得到一个POP3消息存储设备并与它连接--
store = session.getStore("imap");
store.connect(popServer,popUser,popPassword);
//创建邮箱
folder = store.getFolder("INBOX.Trash");
if (!folder.exists()){
folder.create(Folder.HOLDS_MESSAGES);
System.out.println(folder.getName() + " is created");
}
folder = store.getFolder("INBOX.Drafts");
if (!folder.exists()){
folder.create(Folder.HOLDS_MESSAGES);
System.out.println(folder.getName() + " is created");
}
folder = store.getFolder("INBOX.Sent");
if (!folder.exists()){
folder.create(Folder.HOLDS_MESSAGES);
System.out.println(folder.getName() + " is created");
}
// -- 得到缺省文件夹--
folder = store.getDefaultFolder();
if(folder == null)
{
throw new Exception("No default folder");
}
// -- ...以及收件箱 --
folder = folder.getFolder(flag);
if(folder == null)
{
throw new Exception("No POP3 INBOX");
}
// -- 以读写方式打开文件夹--
folder.open(Folder.READ_WRITE);
// -- 得到消息包并进行处理--
Message [] msgs = folder.getMessages();
int messageCount = folder.getMessageCount();
int unreadMessageCount = folder.getUnreadMessageCount();
this.setUnreadMessageCount("("+unreadMessageCount+"/"+messageCount+")");
for(int msgNum = msgs.length-1; msgNum >=0; msgNum--)
{
//if(!msgs[msgNum].isSet(Flags.Flag.DELETED)){
messageList.add(addMessage(msgs[msgNum]));
//}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
// -- 注意关闭 --
try
{
if(folder != null)
{
folder.close(true);
}
if(store != null)
{
store.close();
}
}
catch(Exception ex2)
{
ex2.printStackTrace();
}
}
return messageList;
}
public MessageBean read(String popServer,String popUser,String popPassword,String flag,int msgnum)
{
Store store = null;
Folder folder = null;
Message msgs=null;
MessageBean mbean = new MessageBean();
try
{
// -- 得到缺省会话--
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props,null);
session.setDebug(true);
// -- 得到一个POP3消息存储设备并与它连接--
store = session.getStore("imap");
store.connect(popServer,popUser,popPassword);
// -- 得到缺省文件夹--
folder = store.getDefaultFolder();
if(folder == null)
{
throw new Exception("No default folder");
}
// -- ...以及收件箱 --
folder = folder.getFolder(flag);
if(folder == null)
{
throw new Exception("No POP3 INBOX");
}
// -- 以读写方式打开文件夹--
folder.open(Folder.READ_WRITE);
// -- 得到消息包并进行处理--
msgs = folder.getMessage(msgnum);
msgs.setFlag(Flags.Flag.SEEN,true);
int messageCount = folder.getMessageCount();
int unreadMessageCount = folder.getUnreadMessageCount();
this.setUnreadMessageCount("("+unreadMessageCount+"/"+messageCount+")");
mbean = readMessage(msgs);
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
// -- 注意关闭 --
try
{
if(folder != null)
{
folder.close(true);
}
if(store != null)
{
store.close();
}
}
catch(Exception ex2)
{
ex2.printStackTrace();
}
}
return mbean;
}
public MessageBean readMessage(Message message)
{
MessageBean messageBean = new MessageBean();
ArrayList attachmentNames = new ArrayList();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -