隨筆-193  評論-715  文章-1  trackbacks-0
          1,讀入圖片的方式:
          發現網上講的很多讀取圖片的方式都不對,按下面提供的這個方法來讀取,保證成功。
          ?1????private?byte[]?getImageBytes(String?file)?{
          ?2????????byte[]?myData?=?null;
          ?3????????InputStream?input?=?getClass().getClassLoader().getResourceAsStream(
          ?4????????????????file);
          ?5????????try?{
          ?6????????????ByteArrayOutputStream?byteArray?=?new?ByteArrayOutputStream();
          ?7????????????int?ch?=?0;
          ?8????????????while?((ch?=?input.read())?!=?-1)?{
          ?9????????????????byteArray.write(ch);
          10????????????}

          11????????????//?System.out.println(byteArray.size());
          12????????????myData?=?byteArray.toByteArray();
          13????????????//?System.out.println(myData.length);
          14????????}
          ?catch?(Exception?e)?{
          15????????????e.printStackTrace();
          16????????}

          17????????return?myData;
          18????}

          2,發送郵件的“機關”
          ?1????????MimeMessage?msg?=?new?MimeMessage(mailSession);
          ?2????????msg.setFrom(new?InternetAddress(this.getSenderAddress()));
          ?3????????msg.setSubject(this.getTitle());
          ?4????????msg.setSentDate(new?Date());
          ?5????????Address[]?adds?=?InternetAddress.parse(getToAddress());
          ?6????????msg.addRecipients(javax.mail.Message.RecipientType.TO,?adds);
          ?7????????//?新建一個MimeMultipart對象用來存放BodyPart對象(事實上可以存放多個)
          ?8????????MimeMultipart?mm?=?new?MimeMultipart("related");
          ?9????????//?新建一個存放信件內容的BodyPart對象
          10????????BodyPart?mdp?=?new?MimeBodyPart();
          11????????//?給BodyPart對象設置內容和格式/編碼方式
          12????????mdp.setContent(this.getContent(),?"text/html;charset=utf-8");
          13????????//?這句很重要,千萬不要忘了
          14????????mm.addBodyPart(mdp);
          15
          16????????//?---------圖片處理開始!!!!!!!!!!!!!!!!
          17????????mdp?=?new?MimeBodyPart();
          18????????byte?bbb[]?=?new?byte[1024?*?10];
          19????????this.getClass().getClassLoader().getResourceAsStream("notice.jpg")
          20????????????????.read(bbb);
          21????????DataHandler?dh?=?new?DataHandler(new?ByteArrayDataSource(this
          22????????????????.getImageBytes("notice.jpg"),?"application/octet-stream"));
          23????????mdp.setDataHandler(dh);
          24????????//?加上這句將作為附件發送,否則將作為信件的文本內容
          25????????mdp.setFileName("1.jpg");
          26????????mdp.setHeader("content-id",?"<IMG1>");
          27????????//?將含有附件的BodyPart加入到MimeMultipart對象中
          28????????mm.addBodyPart(mdp);
          29????????//?---------圖片處理結束!!!!!!!!!!!!!!!!
          30
          31????????//?把mm作為消息對象的內容
          32????????msg.setContent(mm);
          仔細看代碼中的注釋吧,相信大有幫助。

          3,一個實際應用的完整代碼
          要求根據一個格式文件和模版,發一封漂亮的郵件,所以需要用到HTML格式來發送郵件。不多說了,看代碼吧!


          4,小技巧
          我第一次發送后,發現讀取圖片的程序不對,在Outlook 2003中打開郵件,發現沒有出現圖片,搞半天也不知道是什么原因,后來我用FoxMail打開郵件,發現圖片附件上打了個叉叉,才知道是附件中的圖片讀取不對,如果你有這樣的問題,不妨換個Mail客戶端試試。
          posted on 2007-12-03 16:42 Robin's Programming World 閱讀(1487) 評論(4)  編輯  收藏

          評論:
          # re: 用Java Mail發送帶圖片附件的要點 2007-12-03 17:58 | HiMaigc!
          不錯,很完整的說明。  回復  更多評論
            
          # re: 用Java Mail發送帶圖片附件的要點 2007-12-04 09:11 | 千里冰封
          不錯,很詳細,  回復  更多評論
            
          # re: 用Java Mail發送帶圖片附件的要點 2008-04-01 22:14 | 草包書生
          我正在為發送附件問題而煩惱,thanks for you  回復  更多評論
            
          # re: 用Java Mail發送帶圖片附件的要點 2008-04-10 02:27 | Robin's Java World
          @草包書生
          不客氣,如果能由于我的分享給大家帶來方便,我感到很快樂。  回復  更多評論
            

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 同江市| 海晏县| 绍兴县| 阿克苏市| 景东| 南充市| 五华县| 浦东新区| 唐海县| 棋牌| 凉山| 佛山市| 湄潭县| 朝阳区| 习水县| 新闻| 萝北县| 大渡口区| 山东| 嘉荫县| 佳木斯市| 邵阳县| 咸丰县| 祁门县| 沈丘县| 祁东县| 长丰县| 奉化市| 高碑店市| 平乡县| 新乐市| 剑阁县| 定远县| 玉屏| 博罗县| 东港市| 绵阳市| 阿巴嘎旗| 乐山市| 娱乐| 上思县|