0

我正在使用 Mailgun Yii 扩展(https://github.com/baibaratsky/php-mailgun),并且能够使用以下代码从“views/site/SiteController.php”文件中发送测试电子邮件:

    $message = Yii::app()->mailgun->newMessage();
    $message->setFrom('sender@domain.com', 'Sender Name');
    $message->addTo('recipient@domain.com', 'Recipient Name');
    $message->setSubject('Mailgun API library test');
    $message->setText('Test Email Content Text');
    $message->send();

现在我正在尝试扩展 CEmailLogRoute 类,以便我可以使用 mailgun 发送任何日志电子邮件但没有成功。这是我为扩展它而编写的类:

class CMailGunLogRoute extends CEmailLogRoute {
    protected function sendEmail($email, $subject, $message) {
        $message = Yii::app()->mailgun->newMessage();
        $message->setFrom('sender@domain.com', 'Sender Name');
        $message->addTo($email);
        $message->setSubject($subject);
        $message->setText($message);
        $message->send();
    }
}

这就是我添加到“config/main.php”文件中的内容:

'log'=>array(
   'class'=>'CLogRouter',
   'routes'=>array(
       array(
          'class'=>'CEmailLogRoute',
          'levels'=>'info',
          'emails'=>'recipient@domain.com',
          'sentFrom'=>'sender@domain.com',
          'subject'=>'Email Log File Message',
       ),
    ),
),

这是我在根索引文件上声明的日志记录功能:

function d2l($what, $where='fb.somewhere') {
   $what = print_r($what,true);
   Yii::log($what, 'info','application.'.$where);
}

这就是我在“SiteController.php”文件中调用该函数的地方:

d2l('Test Log Message','site.index');

不幸的是,这似乎都无法让它发送日志电子邮件。最初我尝试在不使用 mailgun 的情况下发送日志电子邮件,但这也不起作用,所以问题可能出在我为邮件日志编写的代码上。

4

1 回答 1

0

我想出了如何做到这一点:

CMailGunLogRoute.php

// components/CMailGunLogRoute.php
class CMailGunLogRoute extends CEmailLogRoute {
  protected function sendEmail($email, $subject, $message) {
    $mail = Yii::app()->mailgun->newMessage();
    $mail->setFrom($this->getSentFrom());
    $mail->addTo($email);
    $mail->setSubject($subject);
    $mail->setText($message);
    $mail->send();
  }
}


站点控制器.php

// controllers/SiteController.php
Yii::log('Test Log Message', 'info','application');


主文件

// config/main.php
'import'=>array(
    'application.components.*',
),

'mailgun' => array(
    'class' => 'application.extensions.php-mailgun.MailgunYii',
    'domain' => 'mydomain.com',
    'key' => 'API_KEY_NUM',
    'tags' => array('yii'), // You may also specify some Mailgun parameters
    'enableTracking' => true,
),

'log'=>array(
   'class'=>'CLogRouter',
   'routes'=>array(
       array(
          'class'=>'CMailGunLogRoute',
          'levels'=>'info',
          'filter'=>'CLogFilter',
          'emails'=>'recipient@domain.com',
          'sentFrom'=>'sender@domain.com',
          'subject'=>'Email Log File Message',
       ),
    ),
),


如果您对如何改进这一点有任何其他提示,请随时在下面添加。

于 2014-01-09T21:21:48.867 回答