Monday, July 27, 2015

Re: Recording Emails Sent

Hi,

assuming Cakephp 2.x:

$Email = new CakeEmail();
//....... all the additional email settings  ....
$result
= $Email->send();

$result['message']  contains the whole email message (txt, html even with attachments),
1. you can parse this to get txt and html parts.
2. option as you wrote, writing your own Email class extending the CakeEmail where you put these getters:

App::uses('CakeEmail', 'Network/Email');
class myCakeEmail extends CakeEmail {
     
public function getTxtMessage() {
         
return $this->_textMessage;
     
}
     
public function getHtmlMessage() {
         
return $this->_htmlMessage;
     
}
}

then simply get the relevant message like this
$Email = new myCakeEmail();
//....... all the additional email settings  ....
if ($Email->send()) {
    $htmlBody
= $Email->getHtmlMessage();
}

Martin

On Monday, July 27, 2015 at 4:53:19 PM UTC+2, #2Will wrote:
I'm trying to work out a good way to record all the emails the system has sent. I want to record them to DB, with columns for To, Subject and Message. 

I don't think that CakeEmail triggers any events or callbacks I can hook into?
If I write a custom Log, I think I just get back the Whole message as text.  

It seems like the best way is to  write my own myEmail class that extends CakeEmail.

how can I get hold of the HTML message and Text message to be sent from within say the send method?

Will

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

No comments: