java mail內送郵件的範例程式碼

來源:互聯網
上載者:User

javamail收郵件很麻煩。要作很多判斷,如附件中文,附件存放等。這段代碼不算完整。僅作參考。

    /**
     * 存放收件到系統中
     *
     * @param sess
     * @param pmm
     * @return
     */
    private boolean storeReceiveMail(Session sess, PlatMessageMailset pmm) throws Exception {
        Store store = null;
        POP3Folder folder = null;
        long size = 0;
        try {
            URLName url = new URLName("pop3", pmm.getPop3(), 110, "", pmm.getUsername(), pmm.getPassword());
            javax.mail.Session s = javax.mail.Session.getDefaultInstance(System.getProperties(), null);
            store = s.getStore(url);
            // if (folder == null) throw new Exception("No default folder");
            //如果是收件匣
            store.connect();
            folder = (POP3Folder) store.getFolder("INBOX");
            if (folder == null) throw new Exception("No POP3 INBOX");
            //使用唯讀方式開啟收件匣
            folder.open(Folder.READ_WRITE);
            //得到檔案夾資訊,擷取郵件清單
            FetchProfile profile = new FetchProfile();
            profile.add(UIDFolder.FetchProfileItem.UID);
            profile.add(FetchProfile.Item.ENVELOPE);
            Message[] msgs = folder.getMessages();
            folder.fetch(msgs, profile);
            for (int msgNum = 0; msgNum < msgs.length; msgNum++) {
                Message message = (msgs[msgNum]);
                if (!message.getFlags().contains(Flags.Flag.SEEN)) {
                    PlatMessage pm = new PlatMessage();
                    pm.setReceiver(pmm.getOwner());
                    pm.setRec_email(pmm.getMailaddr());
                    pm.setSend_date(message.getSentDate());
                    pm.setFolder("INBOX");
                    pm.setMsg_tag(2);
                    pm.setCreate_date(new Date());
                    pm.setIstag(0);
                    pm.setAcctag(0);
                    ///////////////////////////////////存放郵件
                    //獲得發送郵件地址
                    String text = "";
                    String from = ((InternetAddress) message.getFrom()[0]).getPersonal();
                    //InternetAddress ia = new InternetAddress(from);
                    if (from == null) from = ((InternetAddress) message.getFrom()[0]).getAddress();
                    pm.setSender(from);
                    //擷取主題
                    String subject = message.getSubject();
                    pm.setMsg_title(subject);
                    System.out.println("收取郵件,來自:" + from + "。主題:" + subject);
                    //擷取資訊對象
                    Part messagePart = message;
                    Object content = messagePart.getContent();
                    String acc_id = "";
                    System.out.println("content" + content);
                    if (content instanceof String) {
                        //附件
                        text = String.valueOf(content);
                        System.out.println("這兒" + text);
                    } else if (content instanceof Multipart) {
                        Multipart mp = ((Multipart) content);
                        for (int k = 0; k < mp.getCount(); k++) {
                            BodyPart bp = mp.getBodyPart(k);
                            Object t = bp.getContent();
                            if (t instanceof String) {
                                text = (String.valueOf(t));
                                System.out.println("這兒1" + text);
                            } else if (t instanceof InputStream) {
                                String physical = UUIDHex.getUUIDHex();
                                FileControl fc = new FileControl();
                                fc.setMyFile(new File(MESSAGE_ACC_PATH + "\\" + physical));
                                fc.createFile();
                                fc.writeFile(bp.getInputStream());
                                PlatMsgAccessary pma = new PlatMsgAccessary();
                                pma.setFile_name(StringUtil.getString(MailUtil.decodeText(bp.getFileName()), "未知檔案名稱"));
                                pma.setPhysical(physical);
                                pma.setFile_size(bp.getSize());
                                sess.save(pma);
                                acc_id += physical + "||";
                                System.out.println("收取附件,名稱:" + MailUtil.decodeText(bp.getFileName()) + "。大小:" + bp.getSize());
                                size += bp.getSize();
                                pm.setAcctag(1);
                            }
                        }
                    }
                    pm.setAcc_id(acc_id);
                    /**
                     //擷取content類型
                     String contentType = messagePart.getContentType();
                     //如果郵件內容是純文字或者是HTML,那麼列印出資訊
                     String context = "";
                     if (contentType.startsWith("text/plain") ||
                     contentType.startsWith("text/html")) {
                     InputStream is = messagePart.getInputStream();
                     BufferedReader reader = new BufferedReader(new InputStreamReader(is));
                     String thisLine = reader.readLine();
                     context += thisLine;
                     while (thisLine != null) {
                     thisLine = reader.readLine();
                     context += thisLine;
                     }
                     size += context.length();
                     }
                     **/
                    pm.setMsg_size(message.getSize());
                    pm.setMsg_sys("SSEIP");
                    // pm.setMsg_text(context);
                    sess.save(pm);
                    sess.flush();
                    System.out.println("郵件內文:" + text);
                    saveMessageText(sess, pm.getMsg_id(), text);//
                    if (pmm.getDeltag() == 1) {
                        message.setFlag(Flags.Flag.DELETED, true);
                    } else {
                        message.setFlag(Flags.Flag.SEEN, true);
                    }
                }
                // folder.expunge();

                ////////////////////////////////////////結束
            }
            return true;
        } catch (Exception ex) {
            throw ex;
        } finally {
            if (folder != null) {
                folder.close(true);
            }
            store.close();
        }
    }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.