java mail接收邮件的示例代码

来源:互联网 发布:电脑桌面软件打不开 编辑:程序博客网 时间:2024/05/16 13:59

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();
        }
    }

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孕晚期不爱吃肉怎么办 怀孕期间胖了怎么办啊 孕期长得太胖怎么办 狗吃马肉脸肿了怎么办 狗过敏了脸肿了怎么办 孕初期外阴很痒怎么办 怀孕了吃了田鸡怎么办 孕妇睡眠质量差怎么办吃什么 39周2天了还不生怎么办 孕中期体重猛长怎么办 4个半月胎位不正怎么办 41周不产生宫缩怎么办 生完孩子胎盘没有脱落怎么办 39周还是臀位怎么办 怀孕7个月胎位不正怎么办 怀孕六个多月胎位不正怎么办 怀孕七个月了胎位不正怎么办 怀孕七个月胎位不正怎么办 怀孕肚子上有妊娠纹怎么办 怀孕九个月肚子长痱子怎么办 怀孕前体重偏胖怎么办 怀孕打胰岛素血糖控制不好怎么办 孕后期憋的难受怎么办 怀孕6个月不想生怎么办 孕六个月不想要怎么办 怀孕9个月喝酒了怎么办 怀孕8个月喝醉了怎么办 怀孕6个月胃酸烧心怎么办 怀孕7个月胃酸怎么办 怀孕5个月胃酸怎么办 怀孕2个月胃酸怎么办 怀孕六个月胃酸烧心怎么办 孕六个月反胃酸怎么办 怀孕三个月胃酸吐酸水怎么办 孕六个月胃难受怎么办 孕6个月胃酸厉害怎么办 孕妇6个月胃酸怎么办 孕早期胎盘早剥怎么办 孕妇晕车怎么办最有效方法 怀孕了受凉胃疼怎么办 怀孕4个月胎位低怎么办