Obtener la instancia del objeto mailer en una acción es muy sencillo gracias
al atajo getMailer()
:
$mailer = $this->getMailer();
11.2.1. La forma más rápida
Enviar un email es tan sencillo como utilizar el método sfAction::composeAndSend()
:
$this->getMailer()->composeAndSend(
'[email protected]',
'[email protected]',
'Asunto',
'Cuerpo'
);
El método composeAndSend()
utiliza cuatro argumentos:
- La dirección desde la que se envía el email (campo
from
) - La dirección o direcciones a las que se envía el email (campo
to
) - El asunto del mensaje
- El cuerpo o contenido del mensaje
Siempre que un método utilice una dirección de email como argumento, se puede indicar como cadena de texto o como array:
$direccion = '[email protected]';
$direccion = array('[email protected]' => 'Fabien Potencier');
Obviamente puedes enviar un mismo email a varios destinatarios pasando como segundo argumento del método un array con todas las direcciones de email:
$para = array(
'[email protected]',
'[email protected]',
);
$this->getMailer()->composeAndSend('[email protected]', $para, 'Asunto', 'Cuerpo');
$para = array(
'[email protected]' => 'Sr. Destinatario',
'[email protected]' => 'Sra. Destinataria',
);
$this->getMailer()->composeAndSend('[email protected]', $para, 'Asunto', 'Cuerpo');
11.2.2. La forma flexible
Si necesitas más flexibilidad, puedes hacer uso del método
sfAction::compose()
para crear un mensaje, personalizarlo de la forma que
quieras y enviarlo después. Esta forma es útil por ejemplo cuando quieres
añadir un adjunto en el email como se muestra a continuación:
// crear un objeto de tipo mensaje
$mensaje = $this->getMailer()
->compose('[email protected]', '[email protected]', 'Asunto', 'Cuerpo')
->attach(Swift_Attachment::fromPath('/ruta/hasta/el/archivo.zip'))
;
// enviar el mensaje
$this->getMailer()->send($mensaje);
11.2.3. La forma más completa
Si necesitas aún más flexibilidad, puedes crear directamente el objeto del mensaje:
$mensaje = Swift_Message::newInstance()
->setFrom('[email protected]')
->setTo('[email protected]')
->setSubject('Asunto')
->setBody('Cuerpo')
->attach(Swift_Attachment::fromPath('/ruta/hasta/el/archivo.zip'))
;
$this->getMailer()->send($mensaje);
Nota Si quieres saberlo todo sobre cómo crear mensajes, puedes leer las secciones "Creando mensajes" y "Cabeceras de los mensajes" de la documentación oficial de Swift Mailer.