JavaWorld@TW the best professional Java site in Taiwan sun training logo
      註冊 | 登入 | 全文檢索 | 排行榜  

» JavaWorld@TW » EJB / 其它Java EE 討論區 » JavaMail  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
己加入精華區
by koji at 2007-06-22 14:51
本主題所含的標籤
無標籤
作者 mail寄送附件圖檔與html format的疑問 [精華]
RR

~Nintendo Wii~



發文: 517
積分: 3
於 2007-01-12 19:05 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
弟目前有mail程式如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//前略
 
private String mailType="text/html; charset=UTF-8";
private String fileName="D:\\projects\\Java\\mail\\test2.jpg";
...
 
MimeBodyPart mimeBody1=new MimeBodyPart(); //處理郵件本體
mimeBody1.setContent(this.mailContent, mailType); //郵件內文與格式
 
...
 
mimeBody2.setDataHandler(new DataHandler(fds)); //附件Data head
mimeBody2.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));
 
multiPart.addBodyPart(mimeBody1);
multiPart.addBodyPart(mimeBody2);
msg.setContent(multiPart);
 
Transport.send(msg); //寄出信件

如紅字所見,已將mail type設定為html格式。
而郵件內文如下:
1
2
3
4
This is a test mail.<br>
<img src="test2.jpg" alt="picture">
<br><br>
--End of test message--測試中文


在測試之後,發現以hotmail收信,可以直接顯示附件圖檔(完全就像html顯示圖片一般)
1
2
This is a test mail.
[圖片有顯示出來]

以yahoo mail收信,則會變成叉燒包
1
2
This is a test mail.
[x]  <- 圖片顯示不出來,變成討厭的叉叉

以gmail收信的話,則根本無法以html格式呈現......

有想過直接讓圖片連結到主機端的圖片,例如
1
<img src="http://myServer/image/test2.jpg" alt="picture">

但是如果收件者沒有連上網路的話就破功...........囧

大大們有沒有這方面的經驗哩?


vote up 0 vote down
reply to postreply to post

Focus TDCi Powershift,純正德國血統
作者 Re:mail寄送附件圖檔與html format的疑問 [Re:RR]
jimmy14

Give me J-Power !



發文: 633
積分: 3
於 2007-01-13 00:37 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
參考看看 (我沒試過啦 Tounge )
http://www.rgagnon.com/javadetails/java-0504.html
http://java.sun.com/developer/EJTechTips/txtarchive/2004/June25_04_MarkJ.txt


vote up 0 vote down
reply to postreply to post
作者 Re:mail寄送附件圖檔與html format的疑問 [Re:jimmy14]
RR

~Nintendo Wii~



發文: 517
積分: 3
於 2007-01-15 11:55 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
jimmy14 wrote:
參考看看 (我沒試過啦 Tounge )
http://www.rgagnon.com/javadetails/java-0504.html
http://java.sun.com/developer/EJTechTips/txtarchive/2004/June25_04_MarkJ.txt

感謝jimmy14大提點

程式碼重點如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...前略
 
StringBuffer sb=new StringBuffer();
sb.append("This is a test mail.<br>");
sb.append("Mail from: "+this.mailFrom+"<br>");
sb.append("Attachment file is: "+this.fileName);
sb.append("<img src=\"cid:image\" alt=\"picture\">");
sb.append("<br><br>");
sb.append("--End of test message--測試中文");
 
MimeBodyPart mimeBody1=new MimeBodyPart(); //處理郵件本體
mimeBody1.setContent(sb.toString(), "text/html; charset=UTF-8"); //郵件內文與格式
 
MimeBodyPart mimeBody2=new MimeBodyPart();
FileDataSource fds=new FileDataSource(this.fileName); //附件
mimeBody2.setDataHandler(new DataHandler(fds)); //附件Data head
mimeBody2.setHeader("Content-ID", "<image>");
//下面這行設定附件檔名,如附件圖檔僅供顯示也可不必設定
mimeBody2.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B"));
...
後略


由於小弟身邊沒有電子郵件軟體,僅能以web mail測試
測試結果HotMail & GMail都可正常顯示html format的圖片。

不過,目前暫時沒有時間試驗多張圖的顯示,還有待大大們補完囉Sleepy

(縮略圖,點擊圖片鏈接看原圖)


vote up 0 vote down
reply to postreply to post

Focus TDCi Powershift,純正德國血統

» JavaWorld@TW »  EJB / 其它Java EE 討論區 » JavaMail

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JavaWorld@TW


Powered by Powerful JuteForum® Version Jute 1.5.8
Copyright© 2002-2003 Rainman Zhu,Zua,Netboy,Scott. All Rights Reserved.