隨筆-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
          @草包書生
          不客氣,如果能由于我的分享給大家帶來方便,我感到很快樂。  回復  更多評論
            

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


          網站導航:
           
          主站蜘蛛池模板: 万州区| 拉孜县| 青田县| 鄂州市| 平果县| 黄石市| 丰镇市| 西藏| 林周县| 珲春市| 枣强县| 富裕县| 清水河县| 齐河县| 石棉县| 甘泉县| 桑日县| 贵州省| 隆德县| 阿拉尔市| 林周县| 正安县| 淄博市| 乌拉特前旗| 满洲里市| 威宁| 阳朔县| 莱芜市| 永丰县| 伊金霍洛旗| 石城县| 疏附县| 逊克县| 鲁甸县| 海城市| 图们市| 砀山县| 防城港市| 汪清县| 齐齐哈尔市| 房产|