2015-02-23 110 views
0

我爲CakeEmail創建了一個自定義傳輸(爲了讓我使用Mandrill發送郵件)。但是,每當我訪問郵件內容(這是蛋糕電子郵件模板驅動的內容)時,它不會正確地對字符進行編碼(它會將'é'更改爲'Ã'等等)。如果我使用CakeEmail並繞過傳輸,它會在電子郵件中正確顯示字符。我在傳輸代碼中將其縮小爲$ email-> message('html')。如果我輸出$ email-> message('html'),則這些字符已經不正確。CakePHP電子郵件傳輸編碼

App::uses('AbstractTransport', 'Network/Email'); 
App::uses('HttpSocket', 'Network/Http'); 

class MandrillTransport extends AbstractTransport { 
    public function send(CakeEmail $email) { 
     debug($email->message('html'));exit; 
    } 
} 

想法?

回答

0

你最有可能有一個編碼不一致的地方,例如,如果你的App.encoding不符合您的CakeEmail::$charsetCakeEmail會嘗試將內容轉換從App.encodingCakeEmail::$charset

https://github.com/cakephp/.../2.6.2/lib/Cake/Network/Email/CakeEmail.php#L1338

例如,如果前者是iso-8859-1,後者utf-8,就像內容,你最終會與你在這裏顯示的結果。

// outputs é when displayed as utf-8/unicode 
echo mb_convert_encoding('é', 'utf-8', 'iso-8859-1'); 

你必須做一些進一步的調試才能確定事情發生錯誤的地方。