如何在YII中包含PEAR的邮件和SMTP功能?



我已经设置了梨,之前卡在:

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

我不知道要安装哪个库才能让 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 的包含路径中才能正常工作

请参阅 Zend Autoloader 扩展,了解如何实现此扩展

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驻留在 Views 文件夹内的邮件文件夹中,视图路径从配置文件中理解 ( 'viewPath' => 'application.views.mail'

最新更新