Plugins cakePHP电子邮件插件-将其配置到我的cakePHP安装时出现问题
我正试图将此电子邮件插件添加到我的CakePHP v1.3.3安装中,但我遇到了新手问题 以下是插件: 我试图遵循这个相当清晰的示例,但我不确定数据源连接的一些参数应该放在哪里 我有一个Gmail帐户,我想通过IMAP连接。这是我的数据库代码。我不确定“连接”和“数据源”应该放什么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',
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;
}
希望这对你有用