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