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

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

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 JAVAMAIL 附件HTML檔如何當內文?
tracerofwind





發文: 16
積分: 0
於 2010-03-08 04:34 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檔案

不是要將此檔案當作附件, 而是要當作郵件的內容(就是內文, 寄過去可直接看到此HTML的內容, 非附件檔案)

可是遇到還滿大的瓶頸

1. (本來想說用程式讀取內容再設定到setContent裡面) -> 如果要用API讀取HTML檔案內容再使用setContent的話, 我必須要知道文件編碼
(但有時候可能是BIG5可能是UTF-8, 說不定還有ISOXXXXX甚至MS950?所以這方法好像不OK)

2. 直接當作附加入MimeBodyPart -> 恩...就變成附加檔案了, 而不是把此檔案當內容

我想要把這個HTML的內容直接變成 郵件內文

有爬過文... 不過不知道是沒注意還是怎樣

沒找到測試後成功的...

請問有大大有經驗嗎?


reply to postreply to post
作者 Re:JAVAMAIL 附件HTML檔如何當內文? [Re:tracerofwind]
mylee





發文: 764
積分: 1
於 2010-03-08 09:24 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 檔案的編碼,和 setContent 的編碼搞在一起了。

正因為你不使用附件,所以兩者是完全無關的兩件事。不管 HTML 編碼是什麼,讀進 Java 裏就是字串,所有字串都是 Unicode 內碼。接下來再看你要用什麼編碼去寄出,不一定要和 HTML 原編碼相同(不過,若有 meta content-type,那兩者應一致)。

至於要如何判斷 HTML 檔案的編碼,那又是另一個問題。


reply to postreply to post
作者 Re:JAVAMAIL 附件HTML檔如何當內文? [Re:mylee]
tracerofwind





發文: 16
積分: 0
於 2010-03-08 17:00 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
meta content-type 一定會有的吧?
我有試著拿掉META的CONTENT-TYPE似乎也不行
只要妳說的那兩種編碼不同, 必定會是亂碼

檔案如果是BIG5 讀取的方式跟 UTF-8似乎不太一樣

從檔案讀出來變成內容似乎有問題

苦惱 0.0


reply to postreply to post
作者 Re:JAVAMAIL 附件HTML檔如何當內文? [Re:tracerofwind]
mylee





發文: 764
積分: 1
於 2010-03-08 17:08 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
tracerofwind wrote:
meta content-type 一定會有的吧?


誰規定一定要有 meta content-type 的?


我有試著拿掉META的CONTENT-TYPE似乎也不行
只要妳說的那兩種編碼不同, 必定會是亂碼


你先單步除錯,看看讀進程式中是否已是亂碼?或者乾脆先用一段常數字串當做要寄出的內容。
把讀入問題先排除。


檔案如果是BIG5 讀取的方式跟 UTF-8似乎不太一樣
從檔案讀出來變成內容似乎有問題
苦惱 0.0


看起來你所有的問題是在讀檔。先把讀特定編碼的檔案的基本問題瞭解一下。


reply to postreply to post
作者 Re:JAVAMAIL 附件HTML檔如何當內文? [Re:mylee]
tracerofwind





發文: 16
積分: 0
於 2010-03-08 21:27 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
恩 不好意思 沒說清楚

因為不是我需要用的, 要寫給一些不是很懂電腦的人使用,

他們只會用Deamwearer或是FrontPage, 這些軟體都會自動加上meta content-type

所以我才說一定會有

讀入檔案是亂碼的問題, 我懂妳想說什麼

但是我有個疑問

目前我無法不能確認檔案的型態, (例如可能是UTF-8或BIG5...等)

所以讀取檔案的時候不知道要怎樣作才能讓他讀取正確的編碼

不知道如何正確讀出編碼 0.0

當然 如果是我上傳的我一定知道, 但我必須當作其他人不懂... (因為他們真的不懂 ....

寄出方面, 我有測試過, 一般HTML直接打上去(就是常數)是可以用的, 收信出來是正常的, 編碼只要跟JAVA檔(或JSP檔一樣就可以了)

我在想, 是不是先抓出檔案, 然後抓取META判斷究竟是哪種編碼(抓 "charset=XXXX"), 再根據這種編碼來編碼, 好像是很爛而且不知道OK不OK的方法...

這方法我還沒測試過就是了

不知道大大有沒有推薦的方法. THX 0.0


reply to postreply to post
作者 Re:JAVAMAIL 附件HTML檔如何當內文? [Re:tracerofwind]
tracerofwind





發文: 16
積分: 0
於 2010-03-08 21:29 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
修正個錯誤, 傳送的內文如果是靜態的 (直接打常數上去) 不一定要跟文件同編碼就可以正常看到了 !

reply to postreply to post
作者 Re:JAVAMAIL 附件HTML檔如何當內文? [Re:tracerofwind]
mylee





發文: 764
積分: 1
於 2010-03-08 21:58 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
tracerofwind wrote:
恩 不好意思 沒說清楚
因為不是我需要用的, 要寫給一些不是很懂電腦的人使用,
他們只會用Deamwearer或是FrontPage, 這些軟體都會自動加上meta content-type
所以我才說一定會有
讀入檔案是亂碼的問題, 我懂妳想說什麼


有加不是更方便你抓出來判斷是什麼編碼?就照該編碼方式讀入(如你自己文中所提)。


不知道大大有沒有推薦的方法. THX 0.0


如果有 meta content-type,就用你自己提的做法。
如果沒有 content-type,也有做法,但有其限制,真有需要再問。


reply to postreply to post
作者 Re:JAVAMAIL 附件HTML檔如何當內文? [Re:mylee]
tracerofwind





發文: 16
積分: 0
於 2010-03-15 20:44 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
我找到一個尋找編碼的測試方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  try{
  
      Scanner sc = null;
      sc = new Scanner(new File("C://week.html"), "Big5");
      StringBuffer bf = new StringBuffer();
      while (sc.hasNextLine())
        bf.append(sc.nextLine());
      sc.close();
 
      if (bf.length() == 0) 
        out.println("a") ;
      else
        out.println("b") ;
 
  }catch(Exception e){
    e.printStackTrace();
  }


如果SCANNER的編碼不正確
讀出來就會是空的null
可以指定多個來判斷...


reply to postreply to post
» JWorld@TW »  EJB / 其它Java EE 討論區 » JavaMail

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

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8