郵件傳送時的亂碼問題

2021-08-29 15:22:27 字數 1088 閱讀 4559

前不久在我所在的專案中做了乙個傳送html郵件模板的公升級包,選乙個人群,選乙個模板,然後傳送。

很簡單的乙個小功能,可是在coding的時候還是遇到了一些小問題。其中最主要的乙個問題,就是模板檔案本身的字符集的問題。

properties props = system.getproperties();

session session;

props.put("mail.smtp.host", strsmtpadress);

props.put("mail.smtp.port", strsmtpport);

if (strsenderpassword == null) else

mimemessage message = new mimemessage(session);

上面的**建立乙個mimemessage,再簡單不過的事情了。

然後根據模板名稱獲取html檔案內容,接著我做了這樣一件事情,把模板內容轉成gb2312編碼。

try catch (ioexception e)設定郵件正文:

message.settext(temp, "gb2312");

message.setdatahandler(new datahandler(temp, "text/html;charset=gb2312"));

在郵件正文中,查詢***,title的value就作為郵件的主題。這時候,就出問題了。

我是這麼寫的:

message.setsubject("=?gb2312?b?" + enc.encode(title.getbytes()) + "?=");

選了幾個郵件模板也測試過,當時也沒發現問題。可是上線後,使用者使用的時候說主題出現亂碼。讓使用者把模板發過來,本地再進行測試,居然傳送後的郵件正文格式,都變成了純文字。

使用下面的設定主題的方式後,就正常了:

message.setsubject(title);

暫時還沒有深入的去查詢原因,直覺上是認為和html檔案本身的編碼有關。

php mysql亂碼 郵件傳送等

關於亂碼的除錯的方法 首先保證phpmyadmin中自己都是用的utf 8 網頁也要用utf 8 注意是編碼,而不僅僅是改title 下面是擷取字串和傳送郵件的函式 傳送郵件這個方法蠻好的,具體的phpmailer在自己的電腦裡面有。created by phpstorm.user onlythe ...

C mailto方式傳送郵件亂碼

原先的 大概如下 private void sendmail string mailaddress,string topics subject mailaddress,topics system.diagnostics.process.start message 呼叫程序啟動郵件 郵件主題有時候出現...

使用mail函式傳送郵件標題亂碼問題

php程式使用mail 函式傳送郵件的時候,標題中文的話會出現亂碼。解決方法 先用函式base64 encode 使用 mime base64 對資料進行編碼 標題字串前加編碼型別例如 utf 8?b?標題字串後加 郵件header說明content type 防止郵件正文也亂碼 舉例 to xin...