IMAPQQMail

 IMAPQQMail 

package com.uinnova.ecc.email;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.search.FlagTerm;
import com.sun.mail.imap.IMAPFolder;
import java.io.*;
import java.security.Security;
import java.util.List;
import java.util.Properties;


public class IMAPQQMail {

    private String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
    private List<Bean> list;
    private Bean bean;

    public List<Bean> getList() {
        return list;
    }



    
    public static void main(String[] args) {
    	IMAPQQMail a = new IMAPQQMail();
    	a.getMails("xxxxxxxx@qq.com","xxxxxxxxxxxx");
	}
    

    @SuppressWarnings({ "finally", "restriction" })
	public String getMails(String username,String pass){
        Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
        Properties props = System.getProperties();
        props.setProperty("mail.imap.socketFactory.class", SSL_FACTORY);
        props.setProperty("mail.imap.socketFactory.fallback", "false");
        props.setProperty("mail.store.protocol", "imap");
        props.setProperty("mail.imap.host", "imap.qq.com");//普通QQ邮箱
        props.setProperty("mail.imap.port", "993");
        props.setProperty("mail.imap.socketFactory.port", "993");
        Session session = Session.getDefaultInstance(props,null);
        URLName urln = new URLName("imap","imap.qq.com",993,null, username, pass);

        Store store = null;
        String msg = "";

        Folder inbox = null;
        try {
            store = session.getStore(urln);
            store.connect();
            inbox = (IMAPFolder)store.getFolder("INBOX");
            inbox.open(Folder.READ_WRITE);
            
            
            
            Message[] messages = inbox.getMessages();
            
     
            System.out.println(messages.length);
            System.out.println(inbox.getUnreadMessageCount() + "封未读邮件!");
            System.out.println(inbox.getNewMessageCount() + "封新邮件!");
            
            System.out.println("----------------------------");
            FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); //false代表未读,true代表已读
            Message message[] = inbox.search(ft); //根据设置好的条件获取message 
            System.out.println(message.length);
            
            
            for (Message m : messages){
//                if (m.getFlags().contains(Flags.Flag.SEEN)){
//                    continue;
//                }
                System.out.println("发现一封未读邮件即将分析!");
      /*          IMAPMessage ms = (IMAPMessage) m;
                System.out.println("11");
                String subject = MimeUtility.decodeText(ms.getSubject());
                System.out.println("22");*/
                bean = new Bean();
                mailReceiver(m);
                list.add(bean);
       //         m.setFlag(Flags.Flag.SEEN, true);
                System.out.println("————-————————————————————————————");
            }

        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            msg = "0";
        } finally{
            try {
                inbox.close(false);
                store.close();
            } catch (MessagingException e) {
                // TODO Auto-generated catch block
                //e.printStackTrace();
            }finally{
                return msg;
            }
        }
    }

    private void mailReceiver(Message msg)throws Exception{
        // 发件人信息
        System.out.println("分析邮件内容");
        System.out.println("获取发件人地址");
        Address[] froms = msg.getFrom();
        if(froms != null) {
            System.out.println("即将打印发件人地址。。。");
            InternetAddress addr = (InternetAddress)froms[0];
            System.out.println("发件人地址:" + addr.getAddress());
            bean.setPersonAddress(addr.getAddress());
            bean.setPersonName(addr.getPersonal());
            System.out.println("发件人显示名:" + addr.getPersonal());
        }
        System.out.println("邮件主题:" + msg.getSubject());
        bean.setTheme(msg.getSubject());
        // getContent() 是获取包裹内容, Part相当于外包装
        System.out.println("即将分析邮件内容。。。");
        Object o = msg.getContent();
        if(o instanceof Multipart) {
            System.out.println("Multipart");
            Multipart multipart = (Multipart) o ;
            reMultipart(multipart);
        } else if (o instanceof Part){
            System.out.println("Part");
            Part part = (Part) o;
            rePart(part);
        } else {
            System.out.println("既不是Multipart也不是Part");
            System.out.println("类型" + msg.getContentType());
            System.out.println("内容" + msg.getContent());
        }
    }
    /**
     * @param part 解析内容
     * @throws Exception
     */
    private void rePart(Part part) throws MessagingException, IOException{
        System.out.println("进入rePart");
            if(part.getContentType().startsWith("TEXT/PLAIN")) {
                System.out.println("HTML内容:" + part.getContent());
                bean.setUrl((String) part.getContent());
            } else {
                //System.out.println("HTML内容:" + part.getContent());
            }
    }

    /**
     * @param multipart // 接卸包裹(含所有邮件内容(包裹+正文+附件))
     * @throws Exception
     */
    private void reMultipart(Multipart multipart) throws Exception {
        System.out.println("邮件共有" + multipart.getCount() + "部分组成");
        System.out.println("即将一次处理各部分");
        // 依次处理各个部分
        for (int j = 0, n = multipart.getCount(); j < n; j++) {
            System.out.println("处理第" + j + "部分");
            Part part = multipart.getBodyPart(j);//解包, 取出 MultiPart的各个部分, 每部分可能是邮件内容,
            // 也可能是另一个小包裹(MultipPart)
            // 判断此包裹内容是不是一个小包裹, 一般这一部分是 正文 Content-Type: multipart/alternative
            if (part.getContent() instanceof Multipart) {
                System.out.println("此部分仍有小包裹,将迭代处理!");
                Multipart p = (Multipart) part.getContent();// 转成小包裹
                //递归迭代
                reMultipart(p);
            } else {
                rePart(part);
            }
        }
    }
}

 

 

Bean 

public class Bean {
	
	private String personAddress;
	
	private String personName;
	
	private String theme;
	
	private String url;

	public String getPersonAddress() {
		return personAddress;
	}

	public void setPersonAddress(String personAddress) {
		this.personAddress = personAddress;
	}

	public String getPersonName() {
		return personName;
	}

	public void setPersonName(String personName) {
		this.personName = personName;
	}

	public String getTheme() {
		return theme;
	}

	public void setTheme(String theme) {
		this.theme = theme;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}
	
	
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
javaMail的详细文档,都有以下多有类的详细信息: ACL Address AddressException AddressStringTerm AddressTerm AndTerm AuthenticationFailedException Authenticator BodyPart BodyTerm ByteArrayDataSource ComparisonTerm ConnectionAdapter ConnectionEvent ConnectionListener ContentDisposition ContentType DateTerm DeliveryStatus DispositionNotification FetchProfile FetchProfile.Item Flags Flags.Flag FlagTerm Folder FolderAdapter FolderClosedException FolderEvent FolderListener FolderNotFoundException FromStringTerm FromTerm Header HeaderTerm HeaderTokenizer HeaderTokenizer.Token IllegalWriteException IMAPFolder IMAPFolder.FetchProfileItem IMAPFolder.ProtocolCommand IMAPMessage IMAPSSLStore IMAPStore IntegerComparisonTerm InternetAddress InternetHeaders InternetHeaders.InternetHeader MailDateFormat MailEvent MailHandler MailSSLSocketFactory Message Message.RecipientType MessageAware MessageChangedEvent MessageChangedListener MessageContext MessageCountAdapter MessageCountEvent MessageCountListener MessageHeaders MessageIDTerm MessageNumberTerm MessageRemovedException MessagingException MethodNotSupportedException MimeBodyPart MimeMessage MimeMessage.RecipientType MimeMultipart MimePart MimePartDataSource MimeUtility Multipart MultipartDataSource MultipartReport NewsAddress NoSuchProviderException NotTerm OrTerm ParameterList ParseException Part PasswordAuthentication POP3Folder POP3Message POP3SSLStore POP3Store PreencodedMimeBodyPart Provider Provider.Type Quota Quota.Resource QuotaAwareStore ReadOnlyFolderException ReceivedDateTerm RecipientStringTerm RecipientTerm Report Rights Rights.Right SearchException SearchTerm SendFailedException SentDateTerm Service Session SharedByteArrayInputStream SharedFileInputStream SharedInputStream SizeTerm SMTPAddressFailedException SMTPAddressSucceededException SMTPMessage SMTPSendFailedException SMTPSSLTransport SMTPTransport Store StoreClosedException StoreEvent StoreListener StringTerm SubjectTerm Transport TransportAdapter TransportEvent TransportListener UIDFolder UIDFolder.FetchProfileItem URLName

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值