<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-86  評論-33  文章-0  trackbacks-0

                                                                           JAVAMAIL核心類介紹
    JAVAMAIL(所需類包: mail.jar    activation.jar)
    JavaMail API 核心類包括:Session,Address,Message,Authenticator,Transpor,Store,Folder.

    1.javax.mail.Session
            Session類定義了與遠程郵件系統通信的郵件會話(MailSession).JavaMail會話僅僅用于存儲與服務器建立連接會話相關的邏輯Session類是JavaMail API最高層入口類。Session對象管理配置選項行和用于與郵件系統交互的用戶認證信息,它使用Java.util.Properties對象配置郵件會話的屬性,如郵件服務器,用戶名,密碼及整個應用程序中共享的其它信息。(Session本身并不處理任何授權操作,他只是存儲這些授權的信息)
            Session類的構造器是私有的,他不能被繼承。他有兩個靜態方法:getInstance 和getDefaultInstance來獲取Session實例,前者創建的不能被其它JVM共享的會話實例,后者創建的可以被其它JVM共享的會話實例。
           Session實例使用的屬性
        mail.transport.protocol   郵件傳輸的協議,getProtocol()方法時返回默認傳入協議
        mail.smtp.host                  使用的默認主機
        mail.smtp.port                   主機使用的端口           25
        mail.user                            未指定用戶時,傳輸和存儲使用的默認用戶           User.name
        mail.from                            發送者的郵件地址
        mail.store.protocol           存儲協議,getStore()方法返回默認的存儲協議
        mail.protocol.host            替代指定協議的mail.host
        mail.protocol.user            替代指定協議的mail.user
        mail.debug                        用于調試會話
        mail.smtp.auth                  true/false  郵件服務器是否要驗證

    Properties props  =   new  Properties();
        
    // 設置郵件會話的屬性
        props.put( " mail.transport.protocol " , " smtp " );
        props.put(
    " mail.smtp.host " , " smtp.usish.com " );
        props.put(
    " mail.smtp.port " , " 25 " );
            props.put("mail.smtp.auth","true");
        
    // 獲得郵件會話對象
        mailSession  =  Session.getDefaultInstance(props); // 不使用認證
        mailSession  =  Session.getDefaultInstance(props,authenticator); // 使用認證

    2.javax.mail.Authenticator
                  
    Session.getDefaultInstance(props,authenticator) 創建會話時使用Authenticator對象以進行認證,如果傳入null對象,那么和不使用認證的調用方式一致。
                  Authenticator代表一個可以為網絡連接獲取認證信息的對象,它通常通過提示用戶輸入用戶名和密碼來收集認證信息,使連接可以訪問受保護的資源。首先創建Authenticator的一個子類,并且在會話對象創建時為會話注冊該Authenticator對象。

    public   class  PopupAuthenticator  extends  Authenticator{
          String username
    = null ;
          String password
    = null ;
          
    public  PopupAuthenticator(){}
          
          
    public  PopupAuthenticator(String name,String pwd){
          username 
    =  name;
          password 
    =  pwd;
          getPasswordAuthentication();
          }
          
    protected  PasswordAuthentication getPasswordAuthentication() {
            
    return   new  PasswordAuthentication(username, password);
          }
          
    }


    使用這個驗證類

        PopupAuthenticator authenticator  =   new  PopupAuthenticator( " envoydada " , " dada " );
        mailSession 
    =  Session.getDefaultInstance(props,authenticator); // 使用認證

    3.javax.mail.Address
     
    Address類表示電子郵件地址,它是一個抽象類,當要表示多個地址時可以用逗號隔開。
           最經常使用的子類是:javax.mail.internet.InternetAddress提供具體實現,且通常可串行化。如果創建地址只包含電子郵件地址,只要傳遞電子郵件地址到構造器即可。
    //帶其它信息的地址
    InternetAddress addr = new InternetAddress();
    addr.setAddress(
    "derek_g@usish.com");
    addr.setPersonal(
    "derek Guo");

    //帶多MAIL地址
    Address[] addrs = InternetAddress.parse("derek_g@usish.com,envoydada@126.com");

    4.javax.mail.Message
           獲得Session對象后,可以繼續創建要發送的郵件消息,這由Message類來完成。Message實現了Part接口,它表示一個郵件消息,包含一系列屬性和一個消息的內容。Message是抽象類,實際使用時必須用一個子類代替以表示集體的郵件格式。如子類javax.mail.internet.MimeMessage , 實現了RFC822和MIME標準。Message子類通常通過字節流構建其實現。
          創建Message的兩個構造方法:       
    Message message = new MimeMessage(Session session);
    MimeMessage message 
    = new MimeMessage(MimeMessage message);

    獲得message之后,可以設置消息的各個部分
          msg.setFrom(new InternetAddress(from));//設置發件人
          msg.setRecipients(Message.RecipientType.TO,InternetAddress.parse(to));//設置收件人
          msg.setRecipients(Message.RecipientType.CC,InternetAddress.parse(cc));//設置抄送人
          msg.setRecipients(Message.RecipientType.BCC,InternetAddress.parse(bcc));//設置暗送人
          msg.setSentDate(d);//設置發郵件的簽名時間
          msg.setSubject(subject);//設置郵件主題      
          
    //msg.setText(content);//純文本發送text/plain表示純文本,默認
          msg.setContent("<meta http-equiv=Content-Type content=text/html; charset=utf-8>郵件測試內容","text/html;charset=utf-8");//html格式發送

    5.javax.mail.Transport
             消息發送Transport類。該類使用指定協議發送消息(通常是SMTP)。Transport是抽象類(繼承自Service類)提供很多通用方法,如命名傳輸、連接服務器和監聽傳輸事件等。
             Transport.send(message);  發送郵件。
             還可以進一步控制消息發送:
       
        Transport transport = session.getTransport("smtp");
        transport.connect( (String) props.get(
    "mail.smtp.host"), username,password);
        transport.sendMessage(mimeMsg,mimeMsg.getRecipients(Message.RecipientType.TO));
        transport.close();

    6.javax.mail.Store
            Store是一個抽象類,它模擬了消息存儲器及其內部目錄(Folder)訪問協議,以存儲和讀取消息,其子類提供具體實現。
            Store定義的存儲器包括一個分層的目錄體系,消息存儲在目錄內,。客戶程序可以通過獲取一個實現了數據庫訪問協議的Store對象來訪問消息存儲器,絕大多數存儲器要求用戶在訪問前提供認證信息,connect方法執行了該認證過程。
         Store store = session.getStore("pop3");//指定協議
         store.connect(host,usename,password);//

    7.javax.mail.Folder
       Folder是一個抽象類,用于分級組織郵件,其子類提供針對具體協議的實現。
      Folder代表的目錄可以容納消息或子目錄,存儲在目錄內的消息被順序計數(從1開始到消息總數),該順序被稱為“郵箱順序”,通常基于郵件消息到達目錄的順序。郵件順序的變動將改變消息的序列號,這種情況僅發生在客戶程序調用Expunge方法擦除目錄內設置了Flags.Flag.DELETED標志位的消息時。執行擦除操作后,目錄內消息將重新編號。
           客戶程序可以通過消息序列號或直接通過相應的Message對象應用目錄中的消息,由于消息序列號在會話中很可能改變,因此應盡可能保存Message對象而非序列號來反復引用對象。
           連接到Store之后,接下來可以獲取一個文件夾(Folder)。該文件夾必須先使用open()方法打開,然后才能讀取里面的消息:
      
    Folder folder = store.getDefaultFolder();
    //或 : Folder folder = store.getFolder("inbox");
    folder.open(Folder.READ_WRITE);
    Message message[] 
    = folder.getMessage();
            open()方法指定了要打開的文件夾及打開方式(如Folder.READ_WRITE)。 inbox是POP3唯一可以使用的文件夾。如果使用IMAP,還可以用其它的文件夾。
             獲得Message之后,就可以用getContent()獲得其內容,或者用writeTo()將內容寫入輸出流。getContent()方法之能得到消息內容,而writeTo()的輸出卻包含消息頭.
          讀完郵件之后要關閉與Folder和Store的連接:
    folder.close(aBoolean);
    store.close();
    posted on 2006-03-23 14:08 Derek.Guo 閱讀(967) 評論(0)  編輯  收藏 所屬分類: Java
    MSN:envoydada@hotmail.com QQ:34935442
    主站蜘蛛池模板: 中文字幕亚洲情99在线| 4444亚洲国产成人精品| 风间由美在线亚洲一区| 免费看美女裸露无档网站| 精品亚洲成a人片在线观看少妇| 中文字幕乱理片免费完整的| 亚洲国产精品无码久久青草| 香蕉视频免费在线播放| 免费va人成视频网站全| 无人视频免费观看免费视频| 亚洲国产精品成人网址天堂| 日本中文字幕免费看| 国产偷窥女洗浴在线观看亚洲| 色屁屁www影院免费观看视频| 免费一级做a爰片性色毛片| 黄色a级免费网站| 亚洲片一区二区三区| 精品国产免费一区二区三区| 国产精品亚洲A∨天堂不卡| 精品视频一区二区三区免费| 亚洲AV无码国产精品麻豆天美| 一级毛片免费观看| 亚洲一区二区三区无码国产| 免费高清av一区二区三区| 污污视频网站免费观看| 亚洲日韩小电影在线观看| 99热在线免费播放| 亚洲一区二区三区国产精华液| 国产美女被遭强高潮免费网站| 亚洲精品视频免费| 亚洲人成网站影音先锋播放| 最近2019中文字幕mv免费看| 色噜噜狠狠色综合免费视频| 亚洲AV日韩精品久久久久久| 一个人免费观看在线视频www| 麻豆va在线精品免费播放| 亚洲熟妇av一区二区三区漫画| 91成人在线免费观看| 在线91精品亚洲网站精品成人| 亚洲精品无码久久久久去q| 成视频年人黄网站免费视频|