📄 emailreceive.java
字号:
package mail.control.receive;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.io.InputStreamReader;import java.util.LinkedList;import java.util.Properties;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 javax.mail.internet.InternetAddress;import mail.message.MailMessage;/** * 一个邮件接收类. */public class EmailReceive{ private String popServer = null; private String popUser = null; private String popPassword = null; private LinkedList emailList = new LinkedList(); public static void main(String args[]) { new EmailReceive().test(); } public void test() { receive(); } public void receive() { Store store = null; Folder folder = null; try { //创建缺省会话 Properties props = System.getProperties(); Session session = Session.getDefaultInstance(props, null); //得到一个POP3信息存储设备并与它连接 store = session.getStore("pop3"); store.connect(popServer, popUser, popPassword); //得到缺省文件夹 folder = store.getDefaultFolder(); if (folder == null) throw new Exception("No default folder"); folder = folder.getFolder("INBOX"); if (folder == null) throw new Exception("No POP3 INBOX"); //以只读方式打开文件夹 folder.open(Folder.READ_ONLY); //获取信息包并进行处理 Message[] msgs = folder.getMessages(); for (int msgNum = 0; msgNum < msgs.length; msgNum++) { addOneMessage(msgs[msgNum]); } } catch (Exception ex) { ex.printStackTrace(); } finally { //注意关闭 try { if (folder != null) folder.close(false); if (store != null) store.close(); } catch (Exception ex2) { ex2.printStackTrace(); } } } public void addOneMessage(Message message) throws Exception { MailMessage mailItem = new MailMessage(); String from = ((InternetAddress) message.getFrom()[0]).getAddress(); mailItem.setFrom(from); String subject = message.getSubject(); mailItem.setSubject(subject); //获取信息部分 Part messagePart = message; Object content = messagePart.getContent(); if (content instanceof Multipart) { Multipart mp = (Multipart) content; mailItem.setFlag(true); for (int i = 0; i < mp.getCount(); i++) { String filename = mp.getBodyPart(i).getFileName(); if (filename == null) { String mailContent = partProcess(mailItem,mp.getBodyPart(i)); mailItem.setContent(mailContent); } else { saveAttach(mp.getBodyPart(i),filename); mailItem.addAttach(filename); } } }else { String mailContent = partProcess(mailItem,messagePart); mailItem.setContent(mailContent); } emailList.add(mailItem); } /** * 保存附件 * @param filename */ private void saveAttach(Part part,String filename) throws Exception { File nowdir = new File(".").getAbsoluteFile(); String dirString = nowdir.toString(); String subs = dirString.substring(0, dirString.length() - 1); File tempDir = new File(subs + "info/enclosure/"); File f = new File(tempDir, filename); FileOutputStream fos = new FileOutputStream(f); InputStream fis = new BufferedInputStream(part.getInputStream()); byte[] bb = new byte[512]; while ((fis.read(bb)) != -1)//从网络中读取数据,保存到本地磁盘 { fos.write(bb); } fos.flush(); fos.close(); fis.close(); } /** * 处理文本数据 * @param part * @return * @throws Exception */ private String partProcess(MailMessage item,Part part) throws Exception { String contentType = part.getContentType(); String mailContent = ""; boolean flag1=contentType.startsWith("text/plain"); boolean flag2= contentType.startsWith("text/html"); if(flag1) item.setContentType("html"); else if(flag2) item.setContentType("plain"); if (flag1||flag2) { InputStream is =part.getInputStream(); BufferedReader reader = new BufferedReader( new InputStreamReader(is)); String thisLine = (String) reader.readLine(); while (thisLine != null) { mailContent += (thisLine+"\n"); thisLine = (String) reader.readLine(); } } return mailContent; } /** * @return 返回 emailList。 */ public LinkedList getEmailList() { return emailList; } /** * @param emailList * 要设置的 emailList。 */ public void setEmailList(LinkedList emailList) { this.emailList = emailList; } /** * @return 返回 popPassword。 */ public String getPopPassword() { return popPassword; } /** * @param popPassword * 要设置的 popPassword。 */ public void setPopPassword(String popPassword) { this.popPassword = popPassword; } /** * @return 返回 popServer。 */ public String getPopServer() { return popServer; } /** * @param popServer * 要设置的 popServer。 */ public void setPopServer(String popServer) { this.popServer = popServer; } /** * @return 返回 popUser。 */ public String getPopUser() { return popUser; } /** * @param popUser * 要设置的 popUser。 */ public void setPopUser(String popUser) { this.popUser = popUser; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -