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);