⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pop3spamtester.java

📁 Practical AI in Java 人工智能编程
💻 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 + -