我正试图将此电子邮件插件添加到我的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_attachmentprotected 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;
}
希望这对你有用