Plugins cakePHP电子邮件插件-将其配置到我的cakePHP安装时出现问题

Plugins cakePHP电子邮件插件-将其配置到我的cakePHP安装时出现问题,plugins,cakephp-1.3,email,gmail-imap,Plugins,Cakephp 1.3,Email,Gmail Imap,我正试图将此电子邮件插件添加到我的CakePHP v1.3.3安装中,但我遇到了新手问题 以下是插件: 我试图遵循这个相当清晰的示例,但我不确定数据源连接的一些参数应该放在哪里 我有一个Gmail帐户,我想通过IMAP连接。这是我的数据库代码。我不确定“连接”和“数据源”应该放什么 public $emailCardOrder = array( 'datasource' => 'Emails.Imap', 'server' => 'imap.gmail.com',

我正试图将此电子邮件插件添加到我的CakePHP v1.3.3安装中,但我遇到了新手问题

以下是插件:

我试图遵循这个相当清晰的示例,但我不确定数据源连接的一些参数应该放在哪里

我有一个Gmail帐户,我想通过IMAP连接。这是我的数据库代码。我不确定“连接”和“数据源”应该放什么

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致命错误:ConnectionManager::loadDataSource-无法在第185行的/repos/intranet/trunk/cake/libs/model/connection_manager.PHP中导入数据源类Emails.ImapSource


非常感谢您的帮助。

请小心,您的imap_source.php文件路径是否正确:
app/plugins/emails/
! 使用WinZip时,这些文件可能位于子目录中;-)

因此,第二,我必须更改函数
connect
中的代码,以最终获得与邮箱中文件夹名称连接的字符串,如下所示:
{:}

例如: {server.name.cz:143/imap/notls}收件箱

这可能是像IceWarp或MS Exchange server这样的windows imap服务器的特点

您可以在文件imap_source.php的第504行中控制连接的成功

--

Mareg

请小心,您的imap_source.php文件路径是否正确:
app/plugins/email/
! 使用WinZip时,这些文件可能位于子目录中;-)

因此,第二,我必须更改函数
connect
中的代码,以最终获得与邮箱中文件夹名称连接的字符串,如下所示:
{:}

例如: {server.name.cz:143/imap/notls}收件箱

这可能是像IceWarp或MS Exchange server这样的windows imap服务器的特点

您可以在文件imap_source.php的第504行中控制连接的成功

--

Mareg

您需要将数据源更改为任何数据源名称。默认情况下,它不是Emails.Imap。该插件称为CakePHP电子邮件插件,因此应为“CakePHP电子邮件插件.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',
    ),
))


两年,迟做总比不做强

您需要将数据源更改为任何数据源名称。默认情况下,它不是Emails.Imap。该插件称为CakePHP电子邮件插件,因此应为“CakePHP电子邮件插件.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',
    ),
))


两年,迟做总比不做强

这是我的插件设置

我把数据源放在 /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';
在您尝试获取附件之前,这一切正常

对于获取附件,我取消了这两行的注释,并为标志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;
}

希望这对你有用

这是我的插件设置

我把数据源放在 /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';
在您尝试获取附件之前,这一切正常

对于获取附件,我取消了这两行的注释,并为标志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;
}
希望这对你有用