0

このcakephpメールプラグインを使用して、アカウントからメールを取得しています。これが私のパラメータです

'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です

ありがとう !

4

1 に答える 1

1

これはBase64エンコーディングです。プラグインはそれを処理しないようです。フォーマットのみをチェックしquoted-printableます。

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;
}
于 2012-12-23T14:09:26.567 に答える