Inviare mail con CakePHP utilizzando un server SMTP

Riporto sotto il codice esempio per utilizzare un server SMTP per inviare una mail utilizzando CakePHP.
Da notare che per non mandare in errore il controller bisogna passare i valori dei destinatari to, cc e bcc nel caso fossero più di uno sotto forma di array e non sotto forma di stringa.
Corretto:
$this->Email->to = array('email1@domain.ext','email1@domain.ext');
Sbagliato:
$this->Email->to = 'email1@domain.ext; email1@domain.ext';
Il codice sotto è commentato per una migliore comprensione. Dimenticavo: per funzionare, nel nostro controller dobbiamo caricare il componente Email con var $components = array('Email');

    /* SMTP Options */
$this->Email->smtpOptions = array(
'port'=>'25',
'timeout'=>'30',
'host' => 'smtp.domain.ext',
'username'=>'myuser',
'password'=>'mypass'
);
/* Set delivery method */
$this->Email->delivery = 'smtp';
$this->Email->to = array('email1@domain.ext');
$this->Email->cc = array('email1@domain.ext','email2@domain.ext','email3@domain.ext');
$this->Email->subject = 'Send mail test';
$this->Email->from = 'email4@domain.ext';
$this->Email->template = 'default'; /*Tell to cakePHP which template has to use*/
$this->Email->sendAs = 'both';  /* allowed values: text/html/both */
if ( $this->Email->send() ) {
$this->Session->setFlash(__('An email has been sent.',true));
} else {
$this->Session->setFlash(__('An error occurred while sending mail.',true));
}
/* Check for SMTP errors. */
$this->set('smtp_errors', $this->Email->smtpError);

Rispondi