📄 getmail.java
字号:
package cn.js.fan.mail;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
import cn.js.fan.util.ErrMsgException;
import java.io.InputStream;
import cn.js.fan.util.StrUtil;
import org.apache.log4j.Logger;
public class GetMail {
static boolean debug = true;
String user = "";
String pwd = "";
String server = "";
Message[] msgs = null;
Vector mailmsgs = null;
int port = 110;
Store store = null;
Folder folder = null;
Logger logger = Logger.getLogger( GetMail.class.getName() );
public GetMail(String server, String user, String pwd) {
this.server = server;
this.user = user;
this.pwd = pwd;
}
public GetMail(String server, int port, String user, String pwd) {
this.server = server;
this.user = user;
this.pwd = pwd;
this.port = port;
}
protected void finalize() throws Throwable {
super.finalize();
if (mailmsgs != null) {
mailmsgs.removeAllElements();
mailmsgs = null;
}
}
/**
* 根据类型获取邮件
* @param type 除垃圾箱外的邮件list 垃圾箱dustbin
* @return
* @throws ErrMsgException
*/
public Message[] receive(String type) throws ErrMsgException {
if (type==null)
return null;
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
store.connect(server, port, user, pwd);
folder = store.getDefaultFolder();
if(folder == null) throw new ErrMsgException("找不到默认目录");
folder = folder.getFolder("INBOX");
if(folder == null) throw new ErrMsgException("无 POP3 INBOX");
folder.open(Folder.READ_ONLY);
msgs = folder.getMessages();
}
catch (Exception ex) {
logger.error("receive:"+ex.getMessage());
ex.printStackTrace();
throw new ErrMsgException(ex.getMessage());
}
return msgs;
}
public void close() {
try {
if (folder != null) folder.close(false);
} catch (Exception ex2) {
logger.error("receive:" + ex2.getMessage());
//ex2.printStackTrace();
}
try {
if (store != null) store.close();
} catch (Exception ex2) {
logger.error("receive:" + ex2.getMessage());
ex2.printStackTrace();
}
}
/*
// 按下列方法取出来太慢了
public Vector receive(String type) throws ErrMsgException {
if (type==null)
return null;
Store store = null;
Folder folder = null;
if (mailmsgs != null)
mailmsgs.removeAllElements();
mailmsgs = new Vector();
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
store.connect(server, port, user, pwd);
folder = store.getDefaultFolder();
if(folder == null) throw new ErrMsgException("找不到默认目录");
folder = folder.getFolder("INBOX");
if(folder == null) throw new ErrMsgException("无 POP3 INBOX");
folder.open(Folder.READ_ONLY);
msgs = folder.getMessages();
for(int msgNum = 0; msgNum < msgs.length; msgNum++) {
MailMsg msg = getMessage(msgs[msgNum]);
if (msg.message.isSet(Flags.Flag.DELETED))
logger.error("It is deleted");
if (type.equals("list")) {
if (!msg.isDeleted())
mailmsgs.addElement(msg);
}
else if (type.equals("dustbin")) {
if (msg.isDeleted())
mailmsgs.addElement(msg);
}
else
mailmsgs.addElement(msg);
}
}
catch (Exception ex) {
logger.error("receive:"+ex.getMessage());
ex.printStackTrace();
throw new ErrMsgException(ex.getMessage());
}
finally {
try {
if (folder!=null) folder.close(false);
}
catch (Exception ex2) {
logger.error( "receive:"+ex2.getMessage() );
//ex2.printStackTrace();
}
try {
if (store!=null) store.close();
}
catch (Exception ex2) {
logger.error("receive:"+ex2.getMessage());
ex2.printStackTrace();
}
}
return mailmsgs;
}
*/
/**
* 取得特定num的邮件
* @param i 邮件标号
* @return
*/
public MailMsg getMessageOfNum(int i) {
Store store = null;
Folder folder = null;
MailMsg mailmsg = null;
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
store.connect(server, port, user, pwd);
folder = store.getDefaultFolder();
if(folder == null) throw new ErrMsgException("找不到默认目录");
folder = folder.getFolder("INBOX");
if(folder == null) throw new ErrMsgException("无 POP3 INBOX");
folder.open(Folder.READ_ONLY);
Message msg = folder.getMessage(i);
mailmsg = new MailMsg(msg,true); //用true来取得全部信息,包括邮件正文
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
try {
if (folder!=null) folder.close(false);
}
catch (Exception ex2) {
ex2.printStackTrace();
}
try {
if (store!=null) store.close();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
}
return mailmsg;
}
/**
* 删除邮件
* @param i 邮件ID
* @return
*/
public boolean delMessageOfNum(String[] mailids) {
Store store = null;
Folder folder = null;
MailMsg mailmsg = null;
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
store.connect(server, port, user, pwd);
folder = store.getDefaultFolder();
if(folder == null) throw new ErrMsgException("找不到默认目录");
folder = folder.getFolder("INBOX");
if(folder == null) throw new ErrMsgException("无 POP3 INBOX");
folder.open(Folder.READ_WRITE);
int len = mailids.length;
for (int i=0; i<len; i++) {
if (!StrUtil.isNumeric(mailids[i]))
return false;
logger.error("msg deled num:"+mailids[i]);
Message msg = folder.getMessage(Integer.parseInt(mailids[i]));
msg.setFlag(Flags.Flag.DELETED, true);
}
}
catch (Exception ex) {
ex.printStackTrace();
return false;
}
finally {
try {
if (folder!=null) folder.close(true);//为true则彻底删除,否则将其置入垃圾箱
}
catch (Exception ex2) {
ex2.printStackTrace();
}
try {
if (store!=null) store.close();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
}
return true;
}
public Attachment getAttachment(int msgnum, int attachnum) {
Store store = null;
Folder folder = null;
MailMsg mailmsg = null;
Attachment a = null;
try {
Properties props = System.getProperties();
Session session = Session.getDefaultInstance(props, null);
store = session.getStore("pop3");
System.out.println("server=" + server + " port=" + port + " user=" + user + " pwd=" + pwd);
store.connect(server, port, user, pwd);
folder = store.getDefaultFolder();
if(folder == null) throw new ErrMsgException("找不到默认目录");
folder = folder.getFolder("INBOX");
if(folder == null) throw new ErrMsgException("无 POP3 INBOX");
folder.open(Folder.READ_ONLY);
Message msg = folder.getMessage(msgnum);
mailmsg = new MailMsg(msg); //用true来取得全部信息,包括邮件正文
a = mailmsg.getAttachment(attachnum);
}
catch (Exception ex) {
ex.printStackTrace();
}
finally {
try {
if (folder!=null) folder.close(false);
}
catch (Exception ex2) {
ex2.printStackTrace();
}
try {
if (store!=null) store.close();
}
catch (Exception ex2) {
ex2.printStackTrace();
}
}
return a;
}
public MailMsg getMessage(Message message) {
MailMsg msg = new MailMsg(message, false);
try {
/* String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
if(from==null) from = ((InternetAddress)message.getFrom()[0]).getAddress();
mailContent = "来自: <a mailto='"+from+"'>"+from+"<br>";
String subject = message.getSubject();
mailContent += "主题: "+subject+"<br>";
//String d = message.getReceivedDate().toString();//接收时间
Part messagePart = message;
Object content = messagePart.getContent();
*/
//if (content instanceof Multipart) {
// handleMultipart((Multipart)content);
//} else {
// handlePart(messagePart);
//}
/*----------------------原始---------------------
if(content instanceof Multipart) {
messagePart = ((Multipart)content).getBodyPart(0);
//mailContent += "类型:复合文档"+"<BR>";
}
//mailContent += "内容说明: "+content.toString()+"<br>";
String contentType = messagePart.getContentType();
if(contentType.startsWith("text/plain") || contentType.startsWith("text/html")) {
InputStream is = messagePart.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String thisLine = reader.readLine();
while(thisLine!=null) {
mailContent += thisLine;
thisLine = reader.readLine();
}
is.close();
}
*/
}
catch(Exception ex) {
ex.printStackTrace();
}
return msg;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -