📄 pop3spamtester.java
字号:
import javax.mail.*;import java.util.Enumeration;import java.io.InputStream;public class Pop3SpamTester { public static final boolean DEBUG = false; private static BayesianSpamChecker checker = new BayesianSpamChecker(new BayesianTrainer().getWordProbabilityHashtable()); /** * Directions for configuring your POP3 account: * * 1. change Change EMAIL_SERVER to your POP3 email server at your ISP * 2. change ACCOUNT to your pop3 email account * 3. change PASSWORD to yuor pop3 email account password */ public static void main(String argv[]) throws Exception { URLName url = new URLName("pop3", "EMAIL_SERVER", 110, "INBOX", "ACCOUNT", "PASSWORD"); String rawEmailFolder = "INBOX"; Session session = Session.getInstance(System.getProperties(), null); session.setDebug(false); Store store = session.getStore(url); store.connect(); System.out.println("Connected to POP3 email server."); // Open the email folder INBOX on your POP3 test email account: Folder folder = store.getFolder(rawEmailFolder); folder.open(Folder.READ_ONLY); if (folder.getMessageCount() == 0) { System.out.println("No messages in INBOX."); folder.close(false); store.close(); } // Get all messages from POP3 server for this account (note: a different API allows selected messages) Message[] msgs = folder.getMessages(); for (int i = 0; i < msgs.length; i++) { if (DEBUG) printMessage(msgs[i]); float paul_graham_spam_test = PaulGrahamSpamTest(msgs[i]); System.out.println(" >> Paul Graham spam test value: " + paul_graham_spam_test); if (paul_graham_spam_test > 0.8f) writeSpam(msgs[i]); else writeNonSpam(msgs[i]); } folder.close(false); store.close(); } private static float PaulGrahamSpamTest(Message amail) throws Exception { String contentType = amail.getContentType(); if (contentType.startsWith("text") || contentType.startsWith("TEXT")) { InputStream ins = amail.getInputStream(); StringBuffer sb = new StringBuffer(); byte[] buf = new byte[128]; while (true) { int numRead = ins.read(buf, 0, 128); if (numRead < 1) break; sb.append(new String(buf, 0, numRead)); } ins.close(); String s = sb.toString(); if (s.length() > 10) return checker.probabilityOfSpam(sb.toString()); } return 0.5f; } private static void writeSpam(Message msg) throws MessagingException { System.out.println("SPAM: " + msg.getSubject()); } private static void writeNonSpam(Message msg) throws MessagingException { System.out.println("NOT SPAM: " + msg.getSubject()); } private static void printMessage(Message msg) { try { System.out.println("Subject: " + msg.getSubject()); System.out.println(" Date: " + msg.getSentDate()); Enumeration headers = msg.getAllHeaders(); while (headers.hasMoreElements()) { javax.mail.Header header = (javax.mail.Header) headers.nextElement(); System.out.println(" Header name: " + header.getName() + " value: " + header.getValue()); } String contentType = msg.getContentType(); System.out.println(" Content type: " + contentType); Object content = msg.getContent(); System.out.println(" Content: " + content); if (contentType.startsWith("text") || contentType.startsWith("TEXT")) { InputStream inputStream = msg.getInputStream(); StringBuffer sb = new StringBuffer(); byte[] buf = new byte[128]; while (true) { int numRead = inputStream.read(buf, 0, 128); if (numRead < 1) break; sb.append(new String(buf, 0, numRead)); } inputStream.close(); System.out.println(" Message contents: " + sb.toString() + "\n"); } if (content instanceof Multipart) { System.out.println(" Note: skipping mime multiparts email message"); } } catch (Exception ee) { ee.printStackTrace(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -