📄 getmailtest.java
字号:
import java.util.*;import java.io.*;import javax.mail.*;import javax.mail.internet.*;import javax.activation.*;public class GetMailTest { //收邮件的参数 static String protocol = "pop3"; static String host = "localhost"; static String user = "mellon"; static String password = "1234"; static String mbox = "inbox"; static String url = null; static int port = 110; static boolean verbose = true; static boolean debug = true; static boolean showStructure = false; public static void main(String argv[]) { boolean total = true; Folder folder = null; try { //收邮件 Properties props = System.getProperties(); Session session = Session.getDefaultInstance(props, null); session.setDebug(debug); Store store = session.getStore(protocol); store.connect(host, port, user, password); folder = store.getFolder(mbox); if (folder == null) { System.out.println("Invalid folder"); System.exit(1); } folder.open(Folder.READ_ONLY); //得到邮件个数 int totalMessages = folder.getMessageCount(); if (totalMessages == 0) { System.out.println("Empty folder"); folder.close(false); store.close(); System.exit(1); } if (verbose) { int newMessages = folder.getNewMessageCount(); System.out.println("Total messages = " + totalMessages); System.out.println("New messages = " + newMessages); System.out.println("-------------------------------"); } if (total) { // 得到所有的消息 Message[] msgs = folder.getMessages(); for (int i = 0; i < msgs.length; i++) { System.out.println("--------------------------"); System.out.println("MESSAGE #" + (i + 1) + ":"); //处理信封 dumpEnvelope(msgs[i]); //处理信件内容 dumpPart(msgs[i]); } } folder.close(false); store.close(); } catch (Exception ex) { System.out.println("Oops, got exception! " + ex.getMessage()); ex.printStackTrace(); System.exit(1); } System.exit(0); } public static void dumpPart(Part p) throws Exception { //如果包含信封,处理信封 if (p instanceof Message) dumpEnvelope((Message)p); //输出内容类型 pr("CONTENT-TYPE: " + p.getContentType()); //输出文件名 String filename = p.getFileName(); if (filename != null) pr("FILENAME: " + filename); //处理文本类型 if (p.isMimeType("text/plain")) { pr("This is plain text"); pr("---------------------------"); if (!showStructure) System.out.println((String)p.getContent()); } //处理multipart类型 else if (p.isMimeType("multipart/*")) { pr("This is a Multipart"); pr("---------------------------"); Multipart mp = (Multipart)p.getContent(); int count = mp.getCount(); for (int i = 0; i < count; i++) dumpPart(mp.getBodyPart(i)); } //处理message类型 else if (p.isMimeType("message/rfc822")) { pr("This is a Nested Message"); pr("---------------------------"); dumpPart((Part)p.getContent()); } //详细信息 else if (!showStructure) { Object o = p.getContent(); //打印字符串 if (o instanceof String) { pr("This is a string"); pr("---------------------------"); System.out.println((String)o); } //打印流 else if (o instanceof InputStream) { pr("This is just an input stream"); pr("---------------------------"); InputStream is = (InputStream)o; int c; while ((c = is.read()) != -1)System.out.write(c); } else { pr("This is an unknown type"); pr("---------------------------"); pr(o.toString()); } } else { pr("This is an unknown type"); pr("---------------------------"); } } //处理信封 public static void dumpEnvelope(Message m) throws Exception { pr("This is the message envelope"); pr("---------------------------"); Address[] a; // 发信人 if ((a = m.getFrom()) != null) { for (int j = 0; j < a.length; j++) pr("FROM: " + a[j].toString()); } // 收信人 if ((a = m.getRecipients(Message.RecipientType.TO)) != null) { for (int j = 0; j < a.length; j++) pr("TO: " + a[j].toString()); } // 信件标题 pr("SUBJECT: " + m.getSubject()); // 发送时间 Date d = m.getSentDate(); pr("SendDate: " + (d != null ? d.toString() : "UNKNOWN")); // 信件标识,分系统标识和用户标识 Flags flags = m.getFlags(); StringBuffer sb = new StringBuffer(); Flags.Flag[] sf = flags.getSystemFlags(); boolean first = true; for (int i = 0; i < sf.length; i++) { String s; Flags.Flag f = sf[i]; if (f == Flags.Flag.ANSWERED) s = "\\Answered"; else if (f == Flags.Flag.DELETED) s = "\\Deleted"; else if (f == Flags.Flag.DRAFT) s = "\\Draft"; else if (f == Flags.Flag.FLAGGED) s = "\\Flagged"; else if (f == Flags.Flag.RECENT) s = "\\Recent"; else if (f == Flags.Flag.SEEN) s = "\\Seen"; else continue; // skip it if (first) first = false; else sb.append(' '); sb.append(s); } String[] uf = flags.getUserFlags(); for (int i = 0; i < uf.length; i++) { if (first) first = false; else sb.append(' '); sb.append(uf[i]); } pr("FLAGS: " + sb.toString()); // 得到X-MAILER String[] hdrs = m.getHeader("X-Mailer"); if (hdrs != null) pr("X-Mailer: " + hdrs[0]); else pr("X-Mailer NOT available"); } public static void pr(String s) { System.out.println(s); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -