0

我正在使用 Yii 框架进行 Web 开发。

我正在尝试制作电子邮件 cron 工作,为此我正在使用 PHPMailer。

这是我的config/console.php

> return array(
>     'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
>     'name'=>'My Console Application',
> 
>     // preloading 'log' component
>     'preload'=>array('log'),
>     'import'=>array(
>             'application.modules.*',
>             'application.extensions.*',
>             'application.components.*',
>             'application.models.*',
>         ), ....

我的命令/testCommand.php

class UptimeCheckerCommand extends CConsoleCommand{
    public function run($args) { 
.... 
$warning->send(); 
....

我的组件/Warning.php

....
require("/protected/extensions/PHPMailer/class.phpmailer.php");
....

错误报告:

PHP Error[2]: require(/protected/extensions/PHPMailer/class.phpmailer.php): fail
ed to open stream: No such file or directory

我已经使用控制器对组件进行了测试,它工作得很好。该错误仅在我尝试使用yiic test命令访问它时发生。

任何帮助将不胜感激

4

4 回答 4

2
'import'=>array(
   ...
   'application.extensions.PHPMailer.*',
   ...
)

并将文件class.phpmailer.php重命名为PHPMailer.php

导入目录不会导入其任何子目录。

于 2013-08-16T08:27:47.370 回答
1

试试这样:

$mailer = Yii::import('application.extensions.phpmailer'); 

然后使用$mailer发送电子邮件

于 2013-08-16T08:32:53.973 回答
1
Yii::import('application.extensions.phpmailer'); 

然后你可以这样创建一个对象:

$mail = new PHPMailer();
于 2013-08-16T11:43:59.123 回答
0

感谢您的快速回复。

我已经尝试了上面的一些建议。

Andrey Shatilov的建议没有奏效。

对于usman allammazraara的建议进行更改:

要求("/protected/extensions/PHPMailer/class.phpmailer.php");

Yii::import('application.extensions.PHPMailer.class.phpmailer.php');

也不能工作,因为文件名中有点(class.phpmailer.php)

因为它,yii 认为我在 class 文件夹中请求 phpmailer.php 而不是 class.phpmailer.php

有效的代码:

要求(“../protected/extensions/PHPMailer/class.phpmailer.php”);

不知道为什么会这样,因为 /protected/command/testCommand.php 中的 testCommand.php 和 /protected/extensions/PHPMailer/ 中的 phpmailer 文件,但它有效。

于 2013-08-19T04:12:05.187 回答