cakePHP邮件插件-问题配置它到我的cakePHP安装



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

插件:GitHub SourceCode

我试图遵循相当清晰的示例,但我不确定该为数据源连接的一些参数设置什么。

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

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

您需要将数据源更改为您的数据源名称。默认情况下,它不是email . 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',
    ),

);

两年,迟做总比不做好!

小心你的imap_source.php文件真的在正确的路径:app/plugins/emails/ !当你用WinZip解压时,这些文件可能在子目录中;-)

所以,第二,我必须改变函数connect中的代码,最终获得与电子邮箱中文件夹名称连接的字符串,如下所示:
{<server_name_or_ip>:<port><connect_string>}<folder_name> 例如

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

可能这是windows imap服务器的特点,如IceWarp或MS Exchange服务器。

您可以在文件imap_source.php

中的第504行控制连接的成功

,
Mareg

这是我的设置这个插件

我把数据源放在/应用程序/模型/数据源/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;
}

希望这对你有用

最新更新