javaMail使用imap协议接收邮件

在这里说明一下,pop3和imap协议都是接收邮件的,但是他们还是有很多不同的。
IMAP和POP有什么区别?
POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件、标记已读等),这是不会反馈到服务器上的,比如:您通过电子邮件客户端收取了QQ邮箱中的3封邮件并移动到了其他文件夹,这些移动动作是不会反馈到服务器上的,也就是说,QQ邮箱服务器上的这些邮件是没有同时被移动的 。但是IMAP就不同了,电子邮件客户端的操作都会反馈到服务器上,您对邮件进行的操作(如:移动邮件、标记已读等),服务器上的邮件也会做相应的动作。也就是说,IMAP是“双向”的。
同时,IMAP可以只下载邮件的主题,只有当您真正需要的时候,才会下载邮件的所有内容。

上代码:

package cn.com;
import java.security.Security;
import java.util.Date;
import java.util.Properties;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import com.sun.mail.imap.IMAPFolder;
import com.sun.mail.imap.IMAPStore;
public class ImapFetchMail {
     public static void main(String[] args) {
            String host = "imap.qq.com";
            int port = 993;
            String username = "316301857@qq.com";
            String password = "dengzhiyuanaiyuer";
            final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; 
            Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
/* Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
                            这里有一个错我是这么解决的(Windows -> Preferences,Java/Compiler/Errors/Warnings->
            Deprecated and restricted API, Forbidden reference (access rules),原始设定为Error修改为Warning)*/
            Properties props = System.getProperties();  
            props.setProperty("mail.imap.socketFactory.class", SSL_FACTORY);  
            props.setProperty("mail.imap.socketFactory.port","993");  
            props.setProperty("mail.store.protocol","imap");    
            props.setProperty("mail.imap.host", host);    
            props.setProperty("mail.imap.port", "993");    
            props.setProperty("mail.imap.auth.login.disable", "true"); 
            Session session = Session.getDefaultInstance(props,null);  
            session.setDebug(false);  
            IMAPFolder folder= null;
            IMAPStore store=null;
            try {   
                store=(IMAPStore)session.getStore("imap");  // 使用imap会话机制,连接服务器
                store.connect(host,port,username,password);
                folder=(IMAPFolder)store.getFolder("Sent Messages"); //收件箱 

                Folder defaultFolder = store.getDefaultFolder(); 
                Folder[] allFolder = defaultFolder.list();
              for (int i = 0; i < allFolder.length; i++) {
                    System.out.println("这个是服务器中的文件夹="+allFolder[i].getFullName());
                }
                  // 使用只读方式打开收件箱 
                folder.open(Folder.READ_WRITE);
                int size = folder.getMessageCount();
                System.out.println("这里是打印的条数=="+size);
                Message[] mess=folder.getMessages();
              //  Message message = folder.getMessage(size);
                for (int i = 0; i <5; i++) {
                    String from = mess[i].getFrom()[0].toString();
                    String subject = mess[i].getSubject();
                    Date date = mess[i].getSentDate();
                    System.out.println("From: " + from);
                    System.out.println("Subject: " + subject);
                    System.out.println("Date: " + date);
                }
               /* String from = message.getFrom()[0].toString();
                String subject = message.getSubject();
                Date date = message.getSentDate();*/
               /* BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); */ 

            } catch (NoSuchProviderException e) {
                e.printStackTrace();
            } catch (MessagingException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (folder != null) {
                        folder.close(false);
                    }
                    if (store != null) {
                        store.close();
                    }
                } catch (MessagingException e) {
                    e.printStackTrace();
                }
            }
            System.out.println("接收完毕!");
        }
}
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值