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

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

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

    隨筆-86  評(píng)論-33  文章-0  trackbacks-0

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

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

    Properties props  =   new  Properties();
        
    // 設(shè)置郵件會(huì)話的屬性
        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");
        
    // 獲得郵件會(huì)話對(duì)象
        mailSession  =  Session.getDefaultInstance(props); // 不使用認(rèn)證
        mailSession  =  Session.getDefaultInstance(props,authenticator); // 使用認(rèn)證

    2.javax.mail.Authenticator
                  
    Session.getDefaultInstance(props,authenticator) 創(chuàng)建會(huì)話時(shí)使用Authenticator對(duì)象以進(jìn)行認(rèn)證,如果傳入null對(duì)象,那么和不使用認(rèn)證的調(diào)用方式一致。
                  Authenticator代表一個(gè)可以為網(wǎng)絡(luò)連接獲取認(rèn)證信息的對(duì)象,它通常通過提示用戶輸入用戶名和密碼來收集認(rèn)證信息,使連接可以訪問受保護(hù)的資源。首先創(chuàng)建Authenticator的一個(gè)子類,并且在會(huì)話對(duì)象創(chuàng)建時(shí)為會(huì)話注冊(cè)該Authenticator對(duì)象。

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


    使用這個(gè)驗(yàn)證類

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

    3.javax.mail.Address
     
    Address類表示電子郵件地址,它是一個(gè)抽象類,當(dāng)要表示多個(gè)地址時(shí)可以用逗號(hào)隔開。
           最經(jīng)常使用的子類是:javax.mail.internet.InternetAddress提供具體實(shí)現(xiàn),且通常可串行化。如果創(chuàng)建地址只包含電子郵件地址,只要傳遞電子郵件地址到構(gòu)造器即可。
    //帶其它信息的地址
    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對(duì)象后,可以繼續(xù)創(chuàng)建要發(fā)送的郵件消息,這由Message類來完成。Message實(shí)現(xiàn)了Part接口,它表示一個(gè)郵件消息,包含一系列屬性和一個(gè)消息的內(nèi)容。Message是抽象類,實(shí)際使用時(shí)必須用一個(gè)子類代替以表示集體的郵件格式。如子類javax.mail.internet.MimeMessage , 實(shí)現(xiàn)了RFC822和MIME標(biāo)準(zhǔn)。Message子類通常通過字節(jié)流構(gòu)建其實(shí)現(xiàn)。
          創(chuàng)建Message的兩個(gè)構(gòu)造方法:       
    Message message = new MimeMessage(Session session);
    MimeMessage message 
    = new MimeMessage(MimeMessage message);

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

    5.javax.mail.Transport
             消息發(fā)送Transport類。該類使用指定協(xié)議發(fā)送消息(通常是SMTP)。Transport是抽象類(繼承自Service類)提供很多通用方法,如命名傳輸、連接服務(wù)器和監(jiān)聽傳輸事件等。
             Transport.send(message);  發(fā)送郵件。
             還可以進(jìn)一步控制消息發(fā)送:
       
        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是一個(gè)抽象類,它模擬了消息存儲(chǔ)器及其內(nèi)部目錄(Folder)訪問協(xié)議,以存儲(chǔ)和讀取消息,其子類提供具體實(shí)現(xiàn)。
            Store定義的存儲(chǔ)器包括一個(gè)分層的目錄體系,消息存儲(chǔ)在目錄內(nèi),。客戶程序可以通過獲取一個(gè)實(shí)現(xiàn)了數(shù)據(jù)庫(kù)訪問協(xié)議的Store對(duì)象來訪問消息存儲(chǔ)器,絕大多數(shù)存儲(chǔ)器要求用戶在訪問前提供認(rèn)證信息,connect方法執(zhí)行了該認(rèn)證過程。
         Store store = session.getStore("pop3");//指定協(xié)議
         store.connect(host,usename,password);//

    7.javax.mail.Folder
       Folder是一個(gè)抽象類,用于分級(jí)組織郵件,其子類提供針對(duì)具體協(xié)議的實(shí)現(xiàn)。
      Folder代表的目錄可以容納消息或子目錄,存儲(chǔ)在目錄內(nèi)的消息被順序計(jì)數(shù)(從1開始到消息總數(shù)),該順序被稱為“郵箱順序”,通常基于郵件消息到達(dá)目錄的順序。郵件順序的變動(dòng)將改變消息的序列號(hào),這種情況僅發(fā)生在客戶程序調(diào)用Expunge方法擦除目錄內(nèi)設(shè)置了Flags.Flag.DELETED標(biāo)志位的消息時(shí)。執(zhí)行擦除操作后,目錄內(nèi)消息將重新編號(hào)。
           客戶程序可以通過消息序列號(hào)或直接通過相應(yīng)的Message對(duì)象應(yīng)用目錄中的消息,由于消息序列號(hào)在會(huì)話中很可能改變,因此應(yīng)盡可能保存Message對(duì)象而非序列號(hào)來反復(fù)引用對(duì)象。
           連接到Store之后,接下來可以獲取一個(gè)文件夾(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()獲得其內(nèi)容,或者用writeTo()將內(nèi)容寫入輸出流。getContent()方法之能得到消息內(nèi)容,而writeTo()的輸出卻包含消息頭.
          讀完郵件之后要關(guān)閉與Folder和Store的連接:
    folder.close(aBoolean);
    store.close();
    posted on 2006-03-23 14:08 Derek.Guo 閱讀(967) 評(píng)論(0)  編輯  收藏 所屬分類: Java
    MSN:envoydada@hotmail.com QQ:34935442
    主站蜘蛛池模板: 亚洲乱码中文论理电影| 无遮挡呻吟娇喘视频免费播放| 成人免费视频77777| 国产AV无码专区亚洲AV蜜芽| 亚洲综合精品网站在线观看| 37pao成人国产永久免费视频| 99亚偷拍自图区亚洲| 亚洲色欲久久久综合网| 手机看黄av免费网址| sss在线观看免费高清| 亚洲精品视频免费看| 亚洲AV中文无码乱人伦在线视色 | 免费A级毛片无码A∨免费| 国产亚洲人成在线影院| 亚洲自偷自偷精品| 九月婷婷亚洲综合在线| 中文字幕天天躁日日躁狠狠躁免费| 亚洲影院天堂中文av色| 亚洲AV无码专区国产乱码4SE| 操美女视频免费网站| 最近中文字幕免费大全| 亚洲AV永久无码天堂影院| 国产亚洲日韩在线三区| 大学生高清一级毛片免费| 男人的天堂网免费网站| 黄页网址大全免费观看12网站| 亚洲精品第一国产综合精品| 亚洲欧洲自拍拍偷精品 美利坚 | 久久精品国产99精品国产亚洲性色| 午夜视频免费观看| 久久w5ww成w人免费| 中文字幕乱码系列免费| WWW国产亚洲精品久久麻豆| 亚洲日韩乱码中文无码蜜桃| 日韩亚洲欧洲在线com91tv| 免费jjzz在线播放国产| 97在线观看永久免费视频| 国产麻豆成人传媒免费观看| 成年网在线观看免费观看网址| 亚洲中文字幕久久无码| 亚洲手机中文字幕|