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

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

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
己加入精華區
by koji at 2008-08-19 00:16
本主題所含的標籤
無標籤
作者 發HTML內容,並且夾帶附件(使用jakarta mail) [精華]
glauser





發文: 15
積分: 2
於 2008-06-26 14:03 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
需求:
我要寄出去一篇HTML格式的Mail,並且夾帶附件。

問題:
我使用jakarta mail來寫,因為在附件地方,可以快很多,根據網路上找到相關的code。可是我發現,當我內容是html時,夾帶附件,會造成 Gmail 或 HotMail 收到 HTML ,html本身也成為附件。

我爬了文,找不到類似的作法。試了一個早上,希望跟我一樣困擾的人,不要再走冤枉路。

以下是我的解法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
HtmlEmail email = new HtmlEmail();
    try {
      email.setCharset("UTF-8");
      email.setFrom("xxx@yahoo.com", MimeUtility.encodeText("我就是寄信的人", "UTF-8", "B"));
      email.setHostName("ms1.hinet.net");
 
      email.addTo("xxx@yahoo.com", MimeUtility.encodeText("我是收信人", "UTF-8", "B"));
      
      email.setSubject("This is Test!");
//以下這塊作法跟一般不同,原因是如果直接使用setHtmlMsg會造成內容成為附件
      MimeMultipart mimeMultipart = new MimeMultipart();
      MimeBodyPart content = new MimeBodyPart();
      content.setContent(Content, "text/html; charset=UTF-8");
      content.setDisposition(Part.INLINE);
      mimeMultipart.addBodyPart(content);
      email.addPart(mimeMultipart);
 
      EmailAttachment attachment = null;
 
      File files = dir.list(new WildcardFileFilter("*"));
      File attachFile = null;
      for (int i = 0; i < files.length; i++) {
        attachFile = new File(dir + "/" + files[i]);
        attachment = new EmailAttachment();
        attachment.setPath(attachFile.getAbsolutePath());
        attachment.setDisposition(EmailAttachment.ATTACHMENT);
        attachment.setName(MimeUtility.encodeText(attachFile.getName(), "UTF-8", "B"));
        email.attach(attachment);
 
      }
 
      email.send();
    } catch (EmailException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (UnsupportedEncodingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (MessagingException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }


以上。


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
4342 [精華] 發HTML內容,並且夾帶附件(使用jakarta mail) glauser 1717 2008-06-26 14:03
» JWorld@TW »  EJB / 其它Java EE 討論區 » JavaMail

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

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8