62,621
社区成员
发帖
与我相关
我的任务
分享
public void receive() {
Properties props = System.getProperties();
props.setProperty("mail.store.protocol", "pop3");
Session session = Session.getDefaultInstance(props, null);
URLName urln = new URLName("pop3", popHost, 110, null, user, pass);
Store store = null;
try {
store = session.getStore(urln);
} catch (NoSuchProviderException e1) {
e1.printStackTrace();
}
POP3Folder inbox = null;
int mailnum = 0;
try {
try {
store.connect();//连接POP3服务器
inbox = (POP3Folder) store.getFolder("INBOX");
inbox.open(Folder.READ_WRITE);
mailnum = inbox.getMessageCount();
String[] uid = new String[mailnum];
MimeMessage terpmsg;
MimeMessage[] newMessages =new MimeMessage[mailnum] ;
// 使用此办法来判断是否为新邮件
// 试接收一封新邮件,判断邮件是否已经被下载过,是则停止下载, //否则判断下一封邮件,下载次数为 新邮件数+1
for (int i = mailnum - 1; i >= 0; i--) {
// 下载当前最新未下载邮件
terpmsg = (MimeMessage) inbox.getMessage(i + 1);
uid[i] = inbox.getUID(terpmsg);// 取得邮件UID // 在接收过的记录找不到则对邮件进行操作
if (CheckMailUID.isNewUID(uid[i])) {
isNewMail = true;
newMessages[newMailNum] = terpmsg;
newMailNum++;
} else {
break;
}
}
int reallength = 0;
for(int i = 0;i < newMessages.length; i++){//取得newMessage的长度
if(newMessages[i] != null){
reallength++;
}else{
break;
}
}
if(reallength > 0 ){//遍历新邮件并保存
for(int j = reallength-1;j >= 0; j--){
ReceiveMailUID rmu = new ReceiveMailUID();
//对应邮件uid实际位置mailnum-j-1
rmu.addUID(uid[mailnum-j-1]);
SaveMail savemail = new SaveMail(newMessages[j]);
savemail.saveMail();
}
}
} catch (MessagingException e) {
e.printStackTrace();
}
} finally {
try {
inbox.close(false);
store.close();
isEnd = true;
} catch (Exception e) {
}
}
isReceiveSuccess = true;
}
以前写的,你可以忽略某些部分!!