您的位置:首页 > 编程语言 > Java开发

使用JavaMail接收邮件

2008-01-16 16:19 295 查看
代码如下:


package demo;




import java.io.File;


import java.io.FileOutputStream;


import java.io.InputStream;


import java.util.Properties;




import javax.mail.BodyPart;


import javax.mail.Folder;


import javax.mail.Message;


import javax.mail.Multipart;


import javax.mail.Part;


import javax.mail.Session;


import javax.mail.Store;




import sun.misc.BASE64Decoder;






public class MailReceiver ...{






public static void main(String[] args) ...{




MailReceiver receiver = new MailReceiver();


receiver.setHost("pop3.163.com");


receiver.setUsername("xxxxxxxxx");


receiver.setPassword("yyyyyyyyy");


receiver.setAttachPath("C:/email");




try ...{


receiver.reveiveMail();




} catch (Exception e) ...{


e.printStackTrace();


}


}






public void reveiveMail() throws Exception ...{




Properties props = new Properties();


Session session = Session.getDefaultInstance(props, null);


Store store = session.getStore("pop3");


store.connect(getHost(), getUsername(), getPassword());




Folder folder = store.getFolder("INBOX");


folder.open(Folder.READ_ONLY);


Message message[] = folder.getMessages();


System.out.println("Messages's length: " + message.length);




//FetchProfile profile = new FetchProfile();


//profile.add(FetchProfile.Item.ENVELOPE);


//folder.fetch(message, profile);






for (int i = 0; i < message.length; i++) ...{




//message[i].setFlag(Flags.Flag.DELETED, true);//必须先设置:folder.open(Folder.READ_WRITE);


handleMultipart(message[i]);


}




if (folder != null) ...{


folder.close(true);


}




if (store != null) ...{


store.close();


}


}






private void handleMultipart(Message msg) throws Exception ...{




String disposition;


Multipart mp = (Multipart) msg.getContent();


int mpCount = mp.getCount();




for (int m = 0; m < mpCount; m++) ...{


handle(msg);


BodyPart part = mp.getBodyPart(m);


disposition = part.getDisposition();




if (disposition != null && disposition.equals(Part.ATTACHMENT)) ...{


saveAttach(part, getAttachPath());




} else ...{


System.out.println(part.getContent());


}


}


}






private static void handle(Message msg) throws Exception ...{




System.out.println("邮件主题:" + msg.getSubject());


System.out.println("邮件作者:" + msg.getFrom()[0].toString());


System.out.println("发送日期:" + msg.getSentDate());


}






private static void saveAttach(BodyPart part, String filePath) throws Exception ...{




String temp = part.getFileName();


String s = temp.substring(8, temp.indexOf("?="));


String fileName = base64Decoder(s);


System.out.println("有附件:" + fileName);




InputStream in = part.getInputStream();


FileOutputStream writer = new FileOutputStream(new File(filePath + "/" + fileName));


byte[] content = new byte[255];




while ((in.read(content)) != -1) ...{


writer.write(content);


}


writer.close();


in.close();


}






private static String base64Decoder(String s) throws Exception ...{




BASE64Decoder decoder = new BASE64Decoder();


byte[] b = decoder.decodeBuffer(s);




return (new String(b));


}




private String host = null;


private String username = null;


private String password = null;


private String attachPath = null;






public String getAttachPath() ...{


return attachPath;


}






public void setAttachPath(String attachPath) ...{


this.attachPath = attachPath;


}






public String getHost() ...{


return host;


}






public void setHost(String host) ...{


this.host = host;


}






public String getUsername() ...{


return username;


}






public void setUsername(String username) ...{


this.username = username;


}






public String getPassword() ...{


return password;


}






public void setPassword(String password) ...{


this.password = password;


}


}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: