válido para Symfony 1.3 y 1.4
Índice de contenidos
- Emails (primera parte)
- Introducción
- Enviando emails desde una acción
- Utilizando la vista de symfony
- Configuración
- La estrategia de envío
- El transporte de email
Obtener la instancia del objeto mailer en una acción es muy sencillo gracias
al atajo getMailer():
$mailer = $this->getMailer();
Enviar un email es tan sencillo como utilizar el método
sfAction::composeAndSend():
$this->getMailer()->composeAndSend( 'remitente@ejemplo.com', 'fabien@ejemplo.com', 'Asunto', 'Cuerpo' );
El método composeAndSend() utiliza cuatro argumentos:
from)to)Siempre que un método utilice una dirección de email como argumento, se puede indicar como cadena de texto o como array:
$direccion = 'fabien@ejemplo.com'; $direccion = array('fabien@ejemplo.com' => '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( 'destinatario1@ejemplo.com', 'destinatario2@ejemplo.com', ); $this->getMailer()->composeAndSend('remitente@ejemplo.com', $para, 'Asunto', 'Cuerpo'); $para = array( 'destinatario1@ejemplo.com' => 'Sr. Destinatario', 'destinatario2@ejemplo.com' => 'Sra. Destinataria', ); $this->getMailer()->composeAndSend('remitente@ejemplo.com', $para, 'Asunto', 'Cuerpo');
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('remitente@ejemplo.com', 'fabien@ejemplo.com', 'Asunto', 'Cuerpo') ->attach(Swift_Attachment::fromPath('/ruta/hasta/el/archivo.zip')) ; // enviar el mensaje $this->getMailer()->send($mensaje);
Si necesitas aún más flexibilidad, puedes crear directamente el objeto del mensaje:
$mensaje = Swift_Message::newInstance() ->setFrom('remitente@ejemplo.com') ->setTo('destinatario@ejemplo.com') ->setSubject('Asunto') ->setBody('Cuerpo') ->attach(Swift_Attachment::fromPath('/ruta/hasta/el/archivo.zip')) ; $this->getMailer()->send($mensaje);
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.
válido para Symfony 1.3 y 1.4