0

このメールプラグインをCakePHP v1.3.3インストールに追加しようとしていますが、初心者の問題があります。

プラグインは次のとおりです: GitHub SourceCode

かなり明確な例に従おうとしましたが、データソース接続のいくつかのパラメーターに何を入力すればよいかわかりません。

IMAP 経由で接続したい Gmail アカウントがあります。これが私のデータベースコードです。「接続」と「データソース」に何を入力すればよいかわかりません。

public $emailCardOrder = array(
    'datasource' => 'Emails.Imap',
    'server' => 'imap.gmail.com',
    'connect' => 'imap/tls/novalidate-cert',
    'username' => 'abcd@gmail.com',
    'password' => '#######',
    'port' => '993',
    'ssl' => true,
    'encoding' => 'UTF-8',
    'error_handler' => 'php',
    'auto_mark_as' => array(
        'Seen',
        // 'Answered',
        // 'Flagged',
        // 'Deleted',
        // 'Draft',
    ),
);

私が得るエラーは次のとおりです。 PHP Fatal error: ConnectionManager::loadDataSource - Unable to import DataSource class Emails.ImapSource in /repos/intranet/trunk/cake/libs/model/connection_manager.php on line 185

どんな助けでも大歓迎です。

4

3 に答える 3

2

データソースをデータソース名に変更する必要があります。デフォルトでは Emails.Imap ではありません。プラグインは CakePHP-Email-Plugin という名前なので、「CakePHP-Email-Plugin.ImapSource」のはずです。

public $emailCardOrder = array(
    'datasource' => 'CakePHP-Email-Plugin.ImapSource',
    'server' => 'imap.gmail.com',
    'connect' => 'imap/tls/novalidate-cert',
    'username' => 'abcd@gmail.com',
    'password' => '#######',
    'port' => '993',
    'ssl' => true,
    'encoding' => 'UTF-8',
    'error_handler' => 'php',
    'auto_mark_as' => array(
        'Seen' //,
        // 'Answered',
        // 'Flagged',
        // 'Deleted',
        // 'Draft',
    ),

);

2 年、遅いよりはましです。

于 2013-01-15T16:40:26.607 に答える
1

注意してくださいファイルimap_source.phpは本当に正しいパスにあります:app/plugins/emails/!WinZipでuzipすると、これらのファイルがサブディレクトリにある可能性があります;-)

したがって、次に、関数内のコードを変更して、最終的に次connectのように電子メールボックス内のフォルダーの名前と接続するための文字列を取得する必要があります。
{<server_name_or_ip>:<port><connect_string>}<folder_name>

例:{server.name.cz:143 / imap / notls} INBOX

これは、IceWarpやMSExchangeサーバーなどのWindowsimapサーバーの専門分野である可能性があります。

ファイルimap_source.phpの504行目で接続の成功を制御できます。

-
マレグ

于 2012-01-08T21:26:56.287 に答える
0

これがこのプラグインの私のセットアップです

/app/models/datasource/imap_source.php にデータソースを置きます

database.php にこの変数を追加しました

var $emailTicket = array(
        'datasource' => 'imap',
        'server' => 'imap.gmail.com',
        //'connect' => 'imap/tls/novalidate-cert', //comment it out
        'username' => 'username',
        'password' => '*******',
        'port' => '993',
        'ssl' => true,
        'encoding' => 'UTF-8',
        'error_handler' => 'php',
        'auto_mark_as' => array(
            'Seen',
            // 'Answered',
            // 'Flagged',
            // 'Deleted',
            // 'Draft',
        )
    );

そして私のモデルでは

var $useDbConfig = 'emailTicket';

添付ファイルを取得しようとするまで、これは正常に機能します

添付ファイルを取得するために、これらの 2 行のコメントを外し、フラグ is_attachment の別の 1 行にコメントを付けました

protected function _awesomePart($Part, $uid) {
    if (!($Part->format = @$this->encodingTypes[$Part->type])) {
        $Part->format = $this->encodingTypes[0];
    }

    if (!($Part->datatype = @$this->dataTypes[$Part->type])) {
        $Part->datatype = $this->dataTypes[0];
    }

    $Part->mimeType = strtolower($Part->datatype . '/' . $Part->subtype);

    $Part->is_attachment = false;
    $Part->filename      = '';
    $Part->name          = '';
    $Part->uid           = $uid;

    if ($Part->ifdparameters) {
        foreach ($Part->dparameters as $Object) {
            if (strtolower($Object->attribute) === 'filename') {
                #$Part->is_attachment = true; //uncomment this line
                $Part->filename      = $Object->value;
            }
        }
    }

    if ($Part->ifparameters) {
        foreach ($Part->parameters as $Object) {
            if (strtolower($Object->attribute) === 'name') {
                #$Part->is_attachment = true; //uncomment this line
                $Part->name          = $Object->value;
            }
        }
    }

    if (false !== strpos($Part->path, '.')) {
        $Part->is_attachment = true; //comment this line
    }

    return $Part;
}

これがうまくいくことを願っています

于 2013-08-21T13:13:10.297 に答える