Php 如何包括梨';s邮件和SMTP功能与YII?

Php 如何包括梨';s邮件和SMTP功能与YII?,php,yii,pear,Php,Yii,Pear,我已经设置了pear,之前一直被困在: require_once('Mail.php'); 我试图通过修复PHP.ini中的路径来解决这个问题,但现在YII抱怨: include(LOGIN.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory include(LOGIN.php)[]:无法打开流:没有这样的文件

我已经设置了pear,之前一直被困在:

require_once('Mail.php');
我试图通过修复PHP.ini中的路径来解决这个问题,但现在YII抱怨:

include(LOGIN.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such  file or directory
include(LOGIN.php)[]:无法打开流:没有这样的文件或目录

我不知道安装哪个库来让PEAR获取LOGIN.php,如果这是问题的话。也可能是YII不允许导入LOGIN.PHP,因为它可能有自己的?不过,我在抓救命稻草。有什么想法吗?

这是因为Yii的自动加载器,它设置为查找Yii的类,这与PEAR的标准不同,您需要做的是注册PEAR的自动加载器

你可以在报纸上读到

您可以使用如下所示的自动加载器:

static function loadClass($className){
  include str_replace('_','/',$className).'.php';
  return class_exists($className, false) || interface_exists($className, false);
  return false;
 }
PEAR扩展应该已经在PHP的include路径中,这样才能工作


请参阅,为了了解如何实现此功能,这是因为Yii的自动加载器,它设置为查找Yii的类,这与PEAR的标准不同,您需要做的是注册PEAR的自动加载器

你可以在报纸上读到

您可以使用如下所示的自动加载器:

static function loadClass($className){
  include str_replace('_','/',$className).'.php';
  return class_exists($className, false) || interface_exists($className, false);
  return false;
 }
PEAR扩展应该已经在PHP的include路径中,这样才能工作


请参阅,要了解如何实现此功能,请参阅。YiMail是一个可用于发送包含或不包含smtp的邮件的扩展插件,它是一个电子邮件扩展插件,包装了SwiftMailer。此扩展还允许您从查看文件创建电子邮件。 从下载此文件

在配置文件中,在组件部分包含以下代码

'mail' => array(
                'class' => 'application.extensions.yii-mail.YiiMail',
                'transportType'=>'smtp',
                'transportOptions'=>array(
                    'host'=>'smtp.googlemail.com',
                    'username'=>'test@gmail.com',//
                    'password'=>'passwd',
                    'port'=>'465',
                    'encryption'=>'ssl',
                ),
                'viewPath' => 'application.views.mail',
                'logging' => true,
                'dryRun' => false
        ),
在控制器操作部分,使用如下内容

$message = new YiiMailMessage;
$message->view = 'registrationFollowup';

//userModel is passed to the view
$message->setBody(array('userModel'=>$userModel), 'text/html');


$message->addTo($userModel->email);
$message->addBcc('someone@gmail.com');
$message->from = Yii::app()->params['adminEmail'];
Yii::app()->mail->send($message);

视图
registrationFollowup
位于视图文件夹内的邮件文件夹中,视图路径可以从配置文件(
'viewPath'=>'application.views.mail'
)中理解。

YiiMail
是一个可用于发送包含或不包含smtp的邮件的扩展名,这是一个电子邮件扩展,它包装了
SwiftMailer
。此扩展还允许您从查看文件创建电子邮件。 从下载此文件

在配置文件中,在组件部分包含以下代码

'mail' => array(
                'class' => 'application.extensions.yii-mail.YiiMail',
                'transportType'=>'smtp',
                'transportOptions'=>array(
                    'host'=>'smtp.googlemail.com',
                    'username'=>'test@gmail.com',//
                    'password'=>'passwd',
                    'port'=>'465',
                    'encryption'=>'ssl',
                ),
                'viewPath' => 'application.views.mail',
                'logging' => true,
                'dryRun' => false
        ),
在控制器操作部分,使用如下内容

$message = new YiiMailMessage;
$message->view = 'registrationFollowup';

//userModel is passed to the view
$message->setBody(array('userModel'=>$userModel), 'text/html');


$message->addTo($userModel->email);
$message->addBcc('someone@gmail.com');
$message->from = Yii::app()->params['adminEmail'];
Yii::app()->mail->send($message);

视图
registrationFollowup
位于视图文件夹内的邮件文件夹中,视图路径可以从配置文件中理解(
'viewPath'=>'application.views.mail'

是否可以添加PEAR而不实际复制PEAR库?我问这个问题是因为它已经用“pear install”安装好了,所以我不想再包含这个库。我修改了我的答案,以反映出根本没有管理这个库。我会继续努力。代码应该放在哪里?看看答案中添加的扩展,我们可以给你一个主意,添加PEAR而不需要复制PEAR库吗?我问这个问题是因为它已经用“pear install”安装好了,所以我不想再包含这个库。我修改了我的答案,以反映出根本没有管理这个库。我会继续努力。代码应该放在哪里?看看答案中添加的扩展名,他会给你一个想法,虽然它不能回答他的问题,是吗?但它不能回答他的问题,是吗?