If you want to log Yii errors to an email account, Yii uses mail() by default, so you have to override this. Here's how:
Download and install PHP Mailer from http://phpmailer.worxware.com/. Put the PHP files in your protected/components folder
Create a new file in your protected/components folder called CPhpMailerLogRoute.php, with the following code:
class CPhpMailerLogRoute extends CEmailLogRoute { protected function sendEmail($email, $subject, $message) { $mail = new phpmailer(); $mail->IsSMTP(); $mail->Host = "smtp.gmail.com"; $mail->SMTPAuth = true; $mail->SMTPSecure = "tls"; $mail->Port = 587; $mail->Username = "your gmail username"; $mail->Password = "your gmail password"; //best to keep this in your config file $mail->Subject = $subject; $mail->Body = $message; $mail->addAddress($email); $mail->send(); } }and then, in your configuration file [protected/config/main.php], in the 'components'=>'log'=>'routes' section, add the following:
array('class'=>'CPhpMailerLogRoute', 'levels'=>'error', 'emails'=>'user@example.com')
There you have it. Now you can send Yii errors via your GMail account.
Good one...
ReplyDeleteSounds interesting. I will check it out.
ReplyDeletehow to call this function
ReplyDeleteTo be a drop in replacement for CEmailLogRoute::sendMail() from the Yii source, your class just needs this:
ReplyDelete$mail->SetFrom($this->getSentFrom());