2012-12-22 255 views
0

我正在使用this cakephp電子郵件插件來從帳戶拉電子郵件。下面是我的參數cakephp電子郵件插件,以通過imap拉電子郵件

'datasource' => 'Emails.Imap', 
'server' => 'mail.example.com', 
'connect' => 'imap/novalidate-cert', 
'username' => 'username', 
'password' => 'password', 
'port' => '143', 
'ssl' => false, 
'encoding' => 'UTF-8', 
'error_handler' => 'php', 

和我進行查詢,因爲它是在文檔

$ticketEmails = $this->TicketEmail->find('first', array('recursive' => -1)); 

表示,但是當我調試的結果,下面的字段顯示這樣

Array 
(
    [TicketEmail] => Array 
     (


. . . other fields 

      [body] => CjxIVE1MPjxCT0RZPnNvbWUgbWVzc2FnZTxicj48L0JPRFk+PC9IVE1MPgo= 

      [plainmsg] => IHNvbWUgbWVzc2FnZQo= 

. . . other fields 
     ) 

) 

數據我不明白爲什麼它會顯示這些字符串,例如在電子郵件帳戶的消息正文中只是這個文本some message

我的蛋糕版本是1.3

謝謝!

回答

1

這就是Base64編碼,看起來像插件不處理,它只有checks for the quoted-printable format

你可以decode the data在模型中,例如在Model::afterFind()回調或自定義的方法,或者你可以嘗試修改該插件,以便它返回解碼後的數據(未經測試):

protected function _fetchPart ($Part) { 
    $data = imap_fetchbody($this->Stream, $Part->uid, $Part->path, FT_UID | FT_PEEK); 
    if ($data) { 
     // remove the attachment check to decode them too 
     if ($Part->format === 'base64' && $Part->is_attachment === false) { 
      return base64_decode($data); 
     } 
     if ($Part->format === 'quoted-printable') { 
      return quoted_printable_decode($data); 
     } 
    } 
    return $data; 
} 
+0

非常感謝你非常 !!它現在有效。在我的插件工作正常之後,我對你的答案做了一些補充。希望對其他用戶有所幫助。再次感謝 !! – dav