為何本校的 WebMail 收到本系統的 EMail 都顯示亂碼, 如何解決?

Picture of admin 簡文章
為何本校的 WebMail 收到本系統的 EMail 都顯示亂碼, 如何解決?
by admin 簡文章 - Monday, September 25, 2006, 10:28 AM

User 如果用 Outlook Express 或 Outlook 收信應該不會有問題.

這個問題是本校的 Webmail 的問題, 因為 Webmail 不會自動偵測

郵件的編碼方式, 本系統的 Email 編碼是採國際通用的 UTF-8, 而

WebMail 是以 Big5 去開所有的信, 因此會有亂碼, 此問題負責管

理 WebMail 的計中網路組早已知道但無法解決.

    User 自行解決問題方式: 在打開亂碼信件後, 在亂碼信件內容區,

按 Mouse 右鍵, 點 [編碼], 選 [Unicode UTF-8], 如下圖:

webmail encode utf8

                        計網中心系統組   簡文章

Picture of jshin 張景新
回應: 為何本校的 WebMail 收到本系統的 EMail 都顯示亂碼, 如何解決?
by jshin 張景新 - Wednesday, October 4, 2006, 9:47 PM

I had inspected the raw quote-printable formated mails. My guess is:

The PhpMail used by the Moodle does not generate the following meta data such that the browsers cannot detect UTF-8 encoding automatically:

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

(It also does not produce the <html>...</html> pair before the <header> and after the </body> tags, which appears to me a bug or at least a fault.) 微笑

It is not the problem of the WebMail (or any other browsers) since (probably) no browser had implemented the code detecting mechanism but relying on the meta tag.

One way to correct this problem is to fix source codes of the PhpMail so that it add the above meta tag in the <header> section. (And, pre-/append the required <html> tag pairs, which would be safer.)

You may find the place to printf() this meta tag easily by conducting some educated guesses and using the search functions of your editor to search/find the '<header>' part. You then add a printf() after the output statement(s) that produces the <header> tag.

It often works to fix a big software this way for some minor bugs.



Picture of admin 簡文章
回應: 為何本校的 WebMail 收到本系統的 EMail 都顯示亂碼, 如何解決?
by admin 簡文章 - Thursday, October 5, 2006, 9:02 AM


    我檢查了一封由 moodle 寄給我的信, 如下:

moodle 是有加下

Content-Type: text/plain; charset = "UTF-8" 

Content-Type: text/html; charset = "UTF-8"

charset 編碼設定, 但在 html 內容沒有加

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

我剛剛依您的建議改了 Phpmail 的 source code, 加了

<meta http-equiv="content-type" content="text/html; charset=UTF-8">

測試了寄一封信給自己, NCNU webmail 收信, 主旨仍然是顯示亂碼,

這個無解, 但內容編碼已 auto detect 設為 UTF-8, 非常謝謝您的建議.

                                      計網中心系統組 簡文章


Received: from
 by with NCNU EMail Ver. 0.3(27981:12:AUTH_RELAY)
 Wed, 04 Oct 2006 22:55:23 +0800 (CST);
 (envelope-from <>)
Return-Path: <>
Date: Wed, 4 Oct 2006 14:55:16 +0000
To: =?UTF-8?B?YWRtaW4g57Ch5paH56ug?= <>
From: =?UTF-8?B?OTUxMDcwMjQg6buD5oOg6Zuv?=
Subject: =?UTF-8?B?6ICB5bir5L2g5aW977yM5oiR5LiN5bCP5b+D5oyJ5Yiw5Yqg5YWl5a24?=
Message-ID: <>
X-Priority: 3
X-Mailer: PHPMailer [version Moodle 2006050521]
MIME-Version: 1.0
Content-Type: multipart/alternative;


Content-Type: text/plain; charset = "UTF-8"
Content-Transfer-Encoding: quoted-printable



Content-Type: text/html; charset = "UTF-8"
Content-Transfer-Encoding: quoted-printable

=9D=E8=AC=9D=E6=82=A8=E7=9A=84=E6=8C=87=E6=95=99=E3=80=82</p><hr /><p><a =




Picture of jshin 張景新
回應: 為何本校的 WebMail 收到本系統的 EMail 都顯示亂碼, 如何解決?
by jshin 張景新 - Thursday, October 5, 2006, 1:47 PM

>> 主旨仍然是顯示亂碼, 這個無解, 但內容編碼已 auto detect 設為 UTF-8

這是因為 Webmail 會把 quoted-printable (QP) encode 的「主旨」decode 回來成為 binary codes (不需要知道什麼碼), 可是沒將他轉碼 (不支援). 這確實是 Webmail 的問題.

而內容部份, 經過 decode 後, 直接 pass 給 browser 顯示; 只要 browser 有支援 utf-8, 就能顯示正確. (不關 Webmail 的事).


(1) 在 Webmail QP decode 之後, 把 subject (甚至 html body都) 轉成 big5 (當然, 如果連 html body 都轉, 也要把 meta tag 的 charset 順便改成 big5).

(2) 不改 Webmail source, 而在 moodle/phpmail 將 utf-8 轉碼為 big5 之後, 再用 Base64/QP 格式分別將 subject/body 轉成 ascii characters 送出來. (當然, subject/from/to 的 B64 prefix 改成 '=?big5?B?...?=', html body 內的 meta tag 的 charset 改為 big5.

轉碼的程式 source code (in C) 我應該有 (utf-7/utf-8 <=> big5/gb). 只是不知道塞到哪裡去了. 大笑 你用 Google 一下 'u8tob5', 'b5tou8', 'u8togb', 'gbtou8, 'u8tou7', 'u7tou8', 'u8touni', 'unitou8' 大概就找得到. 交大的 ftp 應該也有.

找不到再跟我講 !!