1 頁 (共 3 頁)

[反應] 2.0.18 中文UTF-8版 信件標題異常

發表於 : 2005-11-03 17:16
oliver0121
同時架設兩個乾淨的網站
一個使用2.0.17竹貓版
一個使用2.0.18竹貓版

在後台內使用"電子郵件發送"功能\r
送出標題與內文皆為 "測試電子郵件標題是否異常"的信件後
於收件軟體Outlook收信時
發現2.0.17完全正常\r
但是2.0.18標題卻會少字
如下圖
圖檔


請問該如何修正呢?^^


其實這個問題在之前brentsu網友分享的UTF版本即已發現\r
但是當初是以 放棄 改用回Big5編碼 方式處理

但這次2.0.18 中文預設改用UTF-8之後 此問題依舊
勢必需要拿出來討論了^^


●架設主機作業系統:租用的空間 (http://www.oneworldhosting.com/ Linux 系統)
●您的上網方式:Hinet ADSL 。
●您的 phpBB2 版本:phpBB 2.0.17 & 2.0.18

發表於 : 2005-11-03 17:21
小竹子
OUTLOOK 對於多國語系都會那樣,EXPRESS 就不會 :oops:

發表於 : 2005-11-03 17:23
oliver0121
小竹子 寫:OUTLOOK 對於多國語系都會那樣,EXPRESS 就不會 :oops:
剛剛用XPSP2內附的OutlookExpress試過了
一樣耶@@

2.0.18只顯示"測試件常"
2.0.17顯示"測試電子郵件標題是否異常"

圖檔

發表於 : 2005-11-03 17:28
小竹子
我記得有一篇文章在討論郵件修正的,利用關鍵字 UTF8 找看看 :oops:

發表於 : 2005-11-03 17:40
oliver0121
小竹子 寫:我記得有一篇文章在討論郵件修正的,利用關鍵字 UTF8 找看看 :oops:
收到\r
[教學] 分享 UTF-8 化的經驗(含 web 畫面與信件)

之前2.0.17照著改是失敗的
待會再來試一次\r


剛剛以英文
THIS IS A TEST FOR THE SUBJECT LENGTH PROBLEM
作標題跟內文發送
兩版本居然都是正常的@@

發表於 : 2005-11-03 17:50
oliver0121
改完了
依舊會截字 :-(

個人猜測是標題字元數的限制\r
UTF-8的中文字佔太多字元

不知道這樣猜對不對

發表於 : 2005-11-03 18:42
阿維
你試試看這個方法吧"[教學] 網站UTF-8化之後,郵件標題在webmail上會變成亂碼的簡單修正方法"
只是,你要將原來email資料夾裡面的的UTF-8改回Big5透過iconv轉碼成Big5發送出去 (標題跟內容)

發表於 : 2005-11-10 08:54
SatanEvil
JORDAN 寫:你試試看這個方法吧"[教學] 網站UTF-8化之後,郵件標題在webmail上會變成亂碼的簡單修正方法"
只是,你要將原來email資料夾裡面的的UTF-8改回Big5透過iconv轉碼成Big5發送出去 (標題跟內容)
既然 phpBB 都花了那麼多工夫讓內容都是 UTF-8 了,
不要用 iconv 或 mb_convert_encoding 獨獨把 subject 轉成非 UTF-8
應該把那兩行用

代碼: 選擇全部

$this->subject = "=?UTF-8?B?" . base64_encode($this->subject) . "?=";
讓 Subject 自已描述自己為 UTF-8 就可以了

PS. 對不起,工作太忙,就不詳細寫了

發表於 : 2005-11-10 16:23
brentsu
不好意思~~ 既然有提到我,我來報告一下~~

這個問題在 Mac OS X 的 Mail 是【完全 OK 通通沒問題】!
因為 Mail 支援真正的 UTF-8!

在 WinXP 上只能安裝 Thunderbird,這套真正的 UTF-8 的 email 軟體。

至於 Outlook 2003 / Outlook Express 6.0 兩個【爛兄爛弟】就別研究啦~~

我看要等 Windows Vista 推出下一版的 Outlook ,支援 UTF-8 的問題才可能真正解決吧?

至於【讓 Subject 自已描述自己為 UTF-8 就可以了 】能解決 Outlook,應該還是無法避免 Yahoo! 的標題只支援 Big5 的問題吧?

發表於 : 2005-11-10 17:48
oliver0121
感謝各位的指教 :-D


SatanEvil兄提出的方法
可以解決我的問題
(outlook , yahoo 測試皆正常顯示!)

不過要加的地方有三處
就是第二個地方

代碼: 選擇全部

$result = @mail($to, $this->subject, preg_replace("#(?<!
)
#s", "
", $this->msg), $this->extra_headers);
其實有兩個
請有需要的朋友也注意一下

另外
可否請竹貓將此修正加入呢?
雖然這是 outlook/outlookexpress的問題
但是使用者眾\r
修正總是好事 ;-)

發表於 : 2005-11-14 15:44
SatanEvil
oliver0121 寫:感謝各位的指教 :-D


SatanEvil兄提出的方法
可以解決我的問題
(outlook , yahoo 測試皆正常顯示!)

不過要加的地方有三處
就是第二個地方

代碼: 選擇全部

$result = @mail($to, $this->subject, preg_replace("#(?<!
)
#s", "
", $this->msg), $this->extra_headers);
其實有兩個
請有需要的朋友也注意一下

另外
可否請竹貓將此修正加入呢?
雖然這是 outlook/outlookexpress的問題
但是使用者眾\r
修正總是好事 ;-)
第三處跟第二處不是在同一個迴圈中嗎? 應該不用再多加一次了吧?

發表於 : 2005-11-14 17:10
brentsu
我又來雞婆一下....
因為我是使用最乾淨的【全新安裝】方式.... 所以應該是最標準的 2.0.18 UTF-8 版討論區....

因此標準的 2.0.18 UTF-8 版把註冊信寄到 yahoo.com.tw 同樣會面臨【主題:】亂碼的問題,不過 yahoo.com 則是沒有這個問題,但是整個網頁要改用 Unicode 才能看到,否則通通是亂碼。

在這裡的【dayto】提出的辦法
http://phpbb-tw.net/phpbb/viewtopic.php?t=34400

其實 MOD 只要改成這樣:

代碼: 選擇全部

# 
#-----[OPEN]---------- 
# 
includes/emailer.php 

# 
#-----[ FIND 尋找]--------------------------------------------- 
# 
$result = smtpmail($to, $this->subject, $this->msg, $this->extra_headers); 

# 
#-----[ BEFORE, ADD 之前,新增]--------------------------------------------- 
# 
$this->subject = "=?UTF-8?B?" . base64_encode($this->subject) . "?=";

# 
#-----[ FIND 尋找]--------------------------------------------- 
# 
$to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;

$result = @mail($to, $this->subject, preg_replace("#(?<!
)
#s", "
", $this->msg), $this->extra_headers); 

# 
#-----[ MODIFY, ADD 修改, ?#91;上]--------------------------------------------- 
# 
$to = ($to == '') ? (($board_config['sendmail_fix']) ? ' ' : 'Undisclosed-recipients:;') : $to;
$this->subject = iconv('UTF-8','Big5',$this->subject);
$result = @mail($to, $this->subject, preg_replace("#(?<!
)
#s", "
", $this->msg), $this->extra_headers);

# 
#-----[ SAVE/CLOSE ALL FILES 儲存/關閉所有檔案 ]------------------- 
# 
# EoM 修正結束 
#
這段程式後面還有一個同樣的【$result = @mail ....】指令,因為是放在 if 指令裡面,應該不用再做 UTF-8 處理了。

這樣子寄到 yahoo.com.tw 的認證信就不會出現亂碼囉~~

要這麼做主要是因為一封【全 UTF-8】的信,主旨部份會長成這樣(我使用的是 Mac OS X 的 Mail 來測試 yahoo.com.tw):

Subject: =?UTF-8?B?5ris6Kmm?=

中間的【5ris6Kmm】編碼其實是【UTF-8的主旨】,所以在主旨前面加上的是【=?UTF-8?B?】後面加上【?=】

嗯~~這就是說,要繼續等下一個 2.0.xx 原廠才可能支援 UTF-8 了.....

PS. 不知道為啥,貼上的【之前,加上】的【加】會變成亂碼??我使用的是 Mac OS X 的 Safari 瀏覽器。

發表於 : 2006-02-07 13:26
mmk7821
oliver0121 寫:感謝各位的指教 :-D


SatanEvil兄提出的方法
可以解決我的問題
(outlook , yahoo 測試皆正常顯示!)

不過要加的地方有三處
就是第二個地方

代碼: 選擇全部

$result = @mail($to, $this->subject, preg_replace("#(?<!
)
#s", "
", $this->msg), $this->extra_headers);
其實有兩個
請有需要的朋友也注意一下

另外
可否請竹貓將此修正加入呢?
雖然這是 outlook/outlookexpress的問題
但是使用者眾\r
修正總是好事 ;-)

+1

我用了之後有用,但是怕以後找不到此文

所以先留言做標簽一下

發表於 : 2006-03-14 20:46
freewingtw
請問 關於 SatanEvil 大大說的 方法
是要開什麼檔案 改什麼內容呢

可否詳述一下 小弟才疏學淺 不能參透其中的意義

我也是碰到 主旨亂碼的問題

發表於 : 2006-04-30 15:33
cvk307
+1

我用了之後有用,但是怕以後找不到此文

所以先留言做標簽一下

我YAHOO也成功惹

但是PCHOME還是不行 好像是因為她預設就是big5的問題

我的版本是2.0.19-utf-8

還去測試看看別的mail 測試完後 會來回報