2013-03-05 14 views
2

我使用這個腳本xSnippet通過SSJS http://openntf.org/XSnippets.nsf/snippet.xsp?id=create-html-mails-in-ssjs-using-mime 它的工作馬麗娟發送電子郵件,但是當我有一種特殊字符的電子郵件地址,這是行不通的。UTF-8 NotesMIMEHeader SENDTO場

是否有任何解決方案爲「to」mimeHeader設置字符集?

var mimeRoot:NotesMIMEEntity = doc.createMIMEEntity("Body"); 
var mimeHeader:NotesMIMEHeader; 

//set to 
if (this._to.length>0) { 
    mimeHeader = mimeRoot.createHeader("To"); 
    mimeHeader.setHeaderVal(this._to.join(",")); 
} 

回答

3

而不是setHeaderVal,嘗試使用addValText()文本方法,該方法接受兩個參數。第一個是字符串值,可以是UTF-8,第二個是字符集 - 即「UTF-8」。當然,你需要確保你的字符串真的是UTF-8。 (我對SSJS不熟悉,所以我不知道它是否在內部將您的this._to.join(",")值表示爲UTF-8。)

有關更多信息,請參閱doc for the NotesMIMEHeader class

+0

,看起來不錯。謝謝 – Pudelduscher 2013-03-08 12:53:33

1

據我知道郵件標題只能包含US-ASCII字符(這個信息可以在MIME規範中找到)。其他字符的標題必須進行編碼。它看起來像多米諾骨牌不默認編碼。

您可以嘗試使用javax.mail.internet.MimeUtility.encodeText,但這可能需要將其他jar添加到項目(JavaMail)中。

+0

問題是,您可以在notes-client中爲郵件地址使用UTF-8字符。我會嘗試MimeUtility。謝謝 – Pudelduscher 2013-03-05 09:05:47

0

我剛剛測試過,由於類似的問題和@W_K是正確的,MIME標頭不能是UTF-8。我結束了這樣做,這適用於我以前遇到問題的情況:

確保您的MIME編碼電子郵件地址,您稍後要添加到TO/CC/BCC MIME標頭。我將此添加到例如的the emailBean by Tony McGuckin的setSendTo()方法:

import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; 

.... 

public void setSendTo(final String sendTo) { 
    try { 
     this.sendTo.add(MimeUtility.encodeText(sendTo.replace("[", "").replace("]", ""), "utf-8", null)); 
    } catch (UnsupportedEncodingException e) { 
     e.printStackTrace(); 
    } 
} 

然後我使用setHeaderVal()方法來添加所需MIME頭但是代替編碼爲UTF-8 I只是使用默認的編碼(其中getSendTo()剛剛返回已經是MIME編碼的字符串):

emailHeader = emailRoot.createHeader("To"); 
emailHeader.addValText(getSendTo());