2011-08-17 12 views
0

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

がここにプラグインです:GitHub SourceCode

私はかなり明確な例に従うことを試みたが、私は、データソース接続のためのパラメータのいくつかのために置くことはよく分かりません。

私はIMAP経由で接続したいGmailアカウントを持っています。ここに私のデータベースコードです。私は 'connect'と 'datasource'のために何を置くべきか分からない。

public $emailCardOrder = array(
    'datasource' => 'Emails.Imap', 
    'server' => 'imap.gmail.com', 
    'connect' => 'imap/tls/novalidate-cert', 
    'username' => '[email protected]', 
    '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

すべてのヘルプは高く評価されます。

答えて

1

注意正しいファイルimap_source.phpは正しいパスにあります:app/plugins/emails/!あなたはfinalyこのような電子メールボックス内のフォルダの名前と接続するための文字列を取得する機能connectでWinZipの;-)

だから、第二、私は変更する必要があるコードでそれをuzipとき は、これらのファイルは、サブディレクトリにあるかもしれませ:
例えば{<server_name_or_ip>:<port><connect_string>}<folder_name>

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

は、これがアイスワープやMS Exchangeサーバのような窓のIMAPサーバの特産であるように。

あなたはファイルimap_source.phpに

をライン504での接続の成功を制御することができます - あなたは、あなたのデータソース名があるものは何でもあなたのデータソースを変更する必要が
MAREG

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' => '[email protected]', 
    'password' => '#######', 
    'port' => '993', 
    'ssl' => true, 
    'encoding' => 'UTF-8', 
    'error_handler' => 'php', 
    'auto_mark_as' => array(
     'Seen' //, 
     // 'Answered', 
     // 'Flagged', 
     // 'Deleted', 
     // 'Draft', 
    ), 

);

2年後、決して遅くはない!

0

はここで、データベース内の /app/models/datasource/imap_source.php

で、このプラグイン

私は、データソースを置くための私のセットアップです。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

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; 
} 

あなたのためにこれが欲しい