您在這裡

Drupal 7 TWAMP Paylean版寄發Html電子報問題?

jackey's 的頭像
jackey 在 2012-04-04 (三) 14:59 發表

請問我使用Drupal 7 TWAMP Paylean並安裝Simplenews+MimeMail+PHPMailer+MailSystem模組寄發Html信件,但是當我信件做完之後在網頁上看起來非常正常,的確是HTML格式呈現,但是只要我寄出測試信件(用Simplenews)無論用Outlook、Gmail(Web介面)來收信,收到的內容都不會呈現HTML,如果我的HTML只是單純Table+色彩的話收到信件內容更是直接空白,body處什麼都沒有,但我已經確認我使用FullHtml,並且在Simplenews設定成Html郵件了,為何會這樣子呢?發純文字信件就一切正常,請各位大大幫幫忙吧謝謝。

補充一下,我發現無論我用Mime Mail或Html Mail但是只要Mail System模組裡面的設定"Site-wide default MailSystemInterface class"
、"Mime Mail module class"、"HTML Mail module class "如果沒有設定成"DrupalPHPMailer"就一定無法寄信,我猜是因為我EMAIL伺服器本來就是用PHP Mailer的關係,但這樣就很奇怪,要用Mime Mail或是Html Mail來寄發HTML格式的電子報不是本來就應該要把"Site-wide default MailSystemInterface class"
、"Mime Mail module class"、"HTML Mail module class "改成他們自己的Module嗎?可是改過之後就會因為沒這些模組(Mime Mail、Html Mail)本身沒有SMTP設定而無法寄信啊,那這樣不就矛盾了?我想是這樣才無法寄出HTML格式的信件吧?那要怎麼解決呢?

找了很久,試了N種方法
我得到一個結論....原來是Drupal 7本身的BUG(這是我的猜測)。
因為我用Drupal 6來做測試發現和Drupal 7不同的地方在於:
Drupal 6如果有安裝Mime Mail之後只要Mime Mail裡面的E-mail engine:選擇"Mime Mail"的話就無法再進入PHPMailer介面了,反之E-mail engine:選擇"PHPMailer"的話在Mime Mail界面下方就會把PHPMailer的介面一併帶出來(如附件1),這表示Mime Mail已經和PHPMailer綁在一起了,所以這樣就可以正常發送電子報,而且寄出來的信也會是HTML格式沒問題,在看Drupal 7,安裝完Mime Mail後和PHPMailer似乎還是分開的,如果再Mime Mail設定裡面的E-mail engine:選擇"PHPMailer"你會發現下面只會出現Engine specific settings,(如附件2)但不會出現任何PHPMailer的設定功能,看起來似乎PHPMailer和Mime Mail並沒有綁再一起,所以雖然可以正常寄送電子報,但是寄出來的信卻不會是HTML格式,所以根據這樣我才猜測應該是Drupal 7本身和PHPMailer、Mime Mail還有一些整合性問題吧。
如果哪位大師能幫忙排解問題小弟會非常感激的。

昨天半夜解決完之後有人問我如何處理,雖然我的處理方式可能並非正統(因為我還沒去看程式碼),但是我今天再重新架設一次確定這種方法確實可以解決問題,所以先提出來給大家參考,希望幫到跟我一樣困擾的人,以下是我主要的處理方式,有問題再問我吧。
為了讓Drupal 7和Drupal 6一樣把Mime Mail綁再一起(前提請先把PHPMailer設定完成),所以
1. 請到設定->系統->Mail System Settings,把Site-wide default MailSystemInterface class換成"MimeMailSystems"。
2. 一樣在設定->系統->Mail System Settings,安裝完MimeMail之後這裡會多出一行模組下拉式設定(就在Site-wide default MailSystemInterface class下面),請點選下拉式,裡面有一個Remove開頭的選項請選擇把模組移除。
3. 請到設定->系統->MimeMail,裡面的E-mail engine 下拉式選擇"PHPMailer......."。
好了設定完畢,當然基本的一些Simplenews、MimeMail相關設定都要改成HTML格式,這裡就先不提了,上面步驟做完就已經綁在一起可以試看看發HTML MAIL,結果......測試成功。