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 = "[email protected]";
            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("接收完畢!");
        }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章