<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    littleQ

    終于明白曾經他們失落的目光,當年的你們是否一樣;間有懈怠或有頹放,難知多久方能補上;今起,不再彷徨!

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      33 Posts :: 0 Stories :: 60 Comments :: 0 Trackbacks
    前不久在我所在的項目中做了一個發送html郵件模板的升級包,選一個人群,選一個模板,然后發送。
    很簡單的一個小功能,可是在coding的時候還是遇到了一些小問題。其中最主要的一個問題,就是模板文件本身的字符集的問題。
            Properties props = System.getProperties();
            Session session;

            props.put(
    "mail.smtp.host", strSMTPAdress);
            props.put(
    "mail.smtp.port", strSMTPPort);

            
    if (strSenderPassword == null{
                props.put(
    "mail.smtp.auth""false");
                session 
    = Session.getDefaultInstance(props);
            }
     else {
                props.put(
    "mail.smtp.auth""true");
                MyAuthenticator myauth 
    = new MyAuthenticator(strSenderEmail, strSenderPassword);
                session 
    = Session.getDefaultInstance(props, myauth);
            }


            MimeMessage message 
    = new MimeMessage(session);

    上面的代碼創建一個MimeMessage,再簡單不過的事情了。
    然后根據模板名稱獲取html文件內容,接著我做了這樣一件事情,把模板內容轉成gb2312編碼。
    try{
                temp 
    = IOUtils.toString(IOUtils.toInputStream(temp, "gb2312"));
                
    // temp = new String(temp.getBytes("gb2312"),"ISO-8859-1");
            }
     catch (IOException e){
                logger.error(
    "模板讀取后,string格式轉換時出錯.", e);
                
    return null;
            }
    設置郵件正文:
      
    message.setText(temp, "gb2312");
    message.setDataHandler(
    new DataHandler(temp, "text/html;charset=gb2312"));

    在郵件正文中,查找<title>XXX</title>,title的value就作為郵件的主題。這時候,就出問題了。
    我是這么寫的:
    message.setSubject("=?GB2312?B?" + enc.encode(title.getBytes()) + "?=");
    選了幾個郵件模板也測試過,當時也沒發現問題。可是上線后,用戶使用的時候說主題出現亂碼。讓用戶把模板發過來,本地再進行測試,居然發送后的郵件正文格式,都變成了純文本。
    使用下面的設置主題的方式后,就正常了:
    message.setSubject(title);

    暫時還沒有深入的去查找原因,直覺上是認為和html文件本身的編碼有關。
    posted on 2008-07-29 11:22 littleQ 閱讀(634) 評論(1)  編輯  收藏

    Feedback

    # re: 郵件發送時的亂碼問題 2008-07-29 12:05 傳軍
    切身體會,好!!!  回復  更多評論
      


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


    網站導航: