您在這裡

模組發出電子郵件編碼的問題

tky's 的頭像
tky 在 2006-12-15 (週五) 13:18 發表

各位好:

TKY實在受不了這個問題了,看看有沒有人能夠一次解決這個問題。

基本上,Drupal發出的電子郵件都是UTF-8編碼而不會有亂碼的問題。
但一些有提供mail通知的模組,會出現中文亂碼的問題。
例如TKY最近在嘗試的RSVP邀請函模組和Mail模組。

RSVP比較一致,從頭到尾、主旨到內容,只要是中文全都是亂碼。官網的有提供patch,Patch過,就會正確編碼(UTF8)。

Mail模組比較怪一點。Mail模組在發信之前可以設定用哪種編碼方式來發信(欲設有四種,包含UTF8),不過發出去的信件只有內文是UTF8編碼,但主旨與寄件者別名仍舊是亂碼。

這個問題,中國Drupal也有人在發問。不過他們的問題多是如何將UTF8轉成簡體中文顯示。TKY只想要一個能夠正確以UTF8編碼的方法而已。

不曉得版上有沒有人可以提供解決之道?

TKY

提供一下中國Drupal的相關資訊,看看能不能給大家什麼靈感。

郵件轉碼,如何正確轉換subject部分編碼?http://www.drupalchina.org/node/131

rsvp模塊發送郵件亂碼怎麼調整
http://www.drupalchina.org/node/207

官網上,UTF-8的相關問題,還包括webform這個模組
Webform module emailing bad utf
http://drupal.org/node/11126

UTF-8
http://drupal.org/node/64349

目前TKY最感興趣的是到底要怎麼讓Mail模組和Webform模組兩者可以寄出正確編碼的郵件(包括主旨和寄件者別名),免得被當成垃圾郵件刪掉!

TKY

tky

OK,看來關於Mail模組郵件編碼一事,不管我在這裡、中國Drupal或官網上問,好像都沒有人有解決之道。這簡直是Mail模組在中文介面下使用的致命傷。

那有沒有人知道或用過什麼樣的模組可以替代Mail模組的功能呢?可以寄發node以及以特定角色寄信的模組?

TKY發覺,有時候讓一個模組可用總是比放棄一個模組來得困難。

TKY

tky

連charlesc都無解?唉~~果然是難到掉渣的一個難題。
TKY上官網PO issue、topic、寫信給作者、找google,知道了一些網路上關於郵件UTF-8編碼的問題,但是,幾次打開Mail的模組,仍完全不知道要從哪裡下手!嗚,連try error都不知從何下手。

關於需求,其實就是Mail本身的功能。以TKY用過的感想來說,Mail實在很不錯。

它可以建立一種「電子郵件」type的node,就像一般的page一樣,可以讓有權限的使用者當做線上發信系統。

它也可以和現有的所有type的node合作,妳可以選擇哪些類型的node可以用電子郵件的方式發出給使用者。(不過最好不要跟event type合作,會出錯)這樣就可以選擇性的選擇重要的公告發信給大家。

每次發電子郵件,都可以選擇發給不同角色的使用者。

使用者在帳號設定中可以選擇要不要收到email,有點類似notify的功能:只是notify是全自動寄出所有使用者沒看過的node給他。

管理者也可以在發信時選擇是否強制發信給那些不想收信的使用者:這對一些重要的消息或活動訊息能否確定發給內部成員來說來說很重要。

唯一唯一的問題就是,Mail發出的信件,只有body可以用utf-8來編碼,主旨和寄件者別名(預設是網站名稱)被漏掉了,所以就老是亂碼!(很怪的是,其他的模組為什麼就不會?)

這等於是好車的輪胎缺了一個,引擎再好也沒法跑!

與其好看卻跑不動,換台車會不會快一點?

找車中的
TKY

tky

這一定有解,只是我不會coding。

另一方面,其實可以懸賞。 Drupal 官網上也常看到有人出價找人寫/改模組。重賞之下還是有勇夫的,畢竟每個人時間有限,除了興趣/熱情之外,多一點動機也是好的。

各位:

在辛苦爬網多天的情況下,居然歪打正著讓TKY解決了Mail模組的編碼問題!

本來TKY是打算放棄Mail模組的,在徹底死心之前不意裝了newsletter這個可以發電子報的模組——結果他X的有一樣的問題!震驚失望之餘,TKY懷著一絲希望上官網去找答案。用UTF-8+newsletter搜尋的結果,找到了一篇說法:

http://drupal.org/node/66143

然而TKY試著在newsletter的模組裡加上作者講的語法的結果,卻導致模組失靈、發信畫面出現空白。山不轉路轉,由於TKY研究過Mail模組的一些語法,發現發信方面都大同小異,於是就把同樣的函數與語法加到Mail去。

結果竟然成功了!
真是活見鬼的歪打正著!

Mail模組現在可以成功運作了,發出的信件主旨和寄件者別名,經過sn_mail_enc_subj這個函數編碼過後,就可以正確顯示UTF-8了!

那newsletter怎麼辦呢?TKY不死心之餘,繼續漂在網上找答案。結果找到了這一篇:
http://drupal.org/node/53937
OK,由於有成功的經驗,照著說明去修改了newsletter的activeMailLib.php內容。

結果電子報的主旨果然能成功編碼為UTF-8!不過,可惜的是寄件者別名就沒辦法了,還是亂碼。

雖然newsletter的寄件者別名可以在管理介面作更改、並非預設是網站別名,改成英文就好,但TKY仍覺得能解決這個問題才是上策。

提供這些訊息給使用這些模組的朋友們,希望大家能一起找到解決之道

還在漂的
TKY

tky