如何建立與 Outlook 相容的 IMap 目錄(PHP)

我們公司的郵件伺服器是用 IMap 協定來讀取電子郵件 (因為 IMap 的郵件是放在伺服器上,不怕用戶的電腦中毒,就算用戶的硬碟毀了,郵件也都還在),因為這個原因,所以我必須要找一個可以支援 IMap 的 Webmail。

找啊找,支援 IMap 的 Webmail 是有找到幾個,可是卻找不到可以相容於 Outlook 的!

為何說無法相容於 Outlook 呢? 以 Outlook 上的「寄件備份」及「草稿」這兩個郵件匣為例,Outlook 便會在 Linux 伺服器上的用戶目錄下分別建立「&W8RO9lCZTv0-」及「&g0l6Pw-」這兩個檔案存放郵件。問題出在我所找到的 Webmail 程式大多不允許用戶建立中文郵件匣,即使可以建立,也不會轉換成像「&W8RO9lCZTv0-」、「&g0l6Pw-」這樣奇怪的名稱,更何況要從這兩個檔案存取郵件!

於是我就找一個支援 IMap 協定、使用上我也覺得比較順手的 Webmail: UebiMiau 去改,但它就像我說的,無法建立中文件郵件匣,於是我就用著我粗淺的 PHP 程式技術改啊改,改了一天,終於改好了,也可以相容 Outlook 了,真高興!

下面的程式片段只是列出郵件匣名稱的編碼及解碼方法…

中文郵件匣名稱的編碼、解碼

拜 Google 所賜,原來「寄件備份」及「草稿」變成了「&W8RO9lCZTv0-」及「&g0l6Pw-」是經過了「UTF-8」+「UTF-7」編碼所致,下面就是編碼及解碼的程式片段:

//編碼
$encode = mb_convert_encoding( iconv("BIG-5", "UTF-8//TRANSLIT", "寄件備份"), "UTF7-IMAP", "UTF-8" );
//解碼
$decode = iconv( "UTF-8","BIG-5//TRANSLIT", mb_convert_encoding( $encode, "UTF-8", "UTF7-IMAP" ) );

最後還是找到了

UebiMiau 在經過一連串的修改之後,雖然已經可以相容於 Outlook 了,但用了幾天,覺得它的功能還是太少,本來我打算拿 Open Webmail 再來改一改,而且也找到了 Perl 的改法 (請參考這一篇)。

不過,不小心找到另一套可以支援 IMap 又可轉換中文郵件匣名稱的 Webmail 系統,它就是 IlohaMail,它還支援多國語言及更換佈景主題,我已經改用這一套了。

所以,這一段時間,我只有學會 IMap 對於郵件匣名稱的編碼、解碼。

參考網頁

  1. No comments yet.

  1. No trackbacks yet.

return top

%d 位部落客按了讚: