FastLight Logo

FastLight Framework 2 DOCS

Documentación de email

La clase Email

Índice

Enviar un email

Para enviar un email, crearemos una instancia de Email y lo enviaremos haciendo uso del método send().

Ejemplo

$to = 'robert@fastlight.org'; $subject = 'Test'; $message = 'Test de email'; $email = new Email($to, $subject, $message); // el método send() es el responsable de realizar el envío $email->send(); echo "Mensaje enviado correctamente";

Los parámetros que acepta el constructor son:

Parámetros

A continuación se muestra un ejemplo si usamos el tercer y cuarto parámetro:

Ejemplo

$to = 'robert@fastlight.org'; $subject = 'Test'; $message = 'Test de email'; $from = 'test@fastlight.org'; $name = 'Ejecución de test'; $email = new Email($to, $subject, $message, $from, $name); $email->send(); echo "Mensaje enviado correctamente";

La operación de contacto

Cuando se realiza la operación de contacto, el email de origen y el nombre de la persona real no coinciden con el remitente. Para estas situaciones podemos usar los parámetros sexto y séptimo.

Ejemplo

// datos para el email asociado a la operación de contacto $to = 'admin@fastlight.org'; $from = 'contact@fastlight.org'; $name = 'Operación de contacto en FastLight'; // estos datos proceden del formulario de contacto $subject = request()->post('asunto'); $message = request()->post('mensaje'); $realFrom = request()->post('from'); $realName = request()->post('name'); $email = new Email($to, $subject, $message, $from, $name, $realFrom, $realName); $email->send(); echo "Mensaje enviado correctamente";

Modificando el mensaje

Para modificar el texto del mensaje, podemos editar el método prepareMessage(), o bien implementar una nueva clase que herede de ésta y redefinirlo.

Ejemplo

/** * Texto del mensaje, personalizar al gusto. * * @param string mensaje */ protected function prepareMessage(string $message){ $this->message = "Este es el texto del mensaje, puede ser texto llano o código HTML."; }

La opción de heredar y redefinir el método prepareMessage() es muy interesante, especialmente cuando tenemos distintos tipos de email, por ejemplo el email de contacto ContactEmail extends Email o el de recuperar password ResetPasswordEmail extends Email.

EmailException

El método send() no retorna boolean, sino que retorna el propio objeto Email en caso de éxito o lanza una EmailException en caso de error.

La clase EmailException se puede implementar a modo de clase vacía que herede de Exception.

Ejemplo

// implementación de la clase EmailException (en EmailException.php) class EmailException extends Exception{}

Massive mailing

Si queremos enviar muchos emails iguales de golpe, no hace falta crear múltiples instancias de Email, simplemente creamos una y vamos enviando el mismo mensaje a los distintos destinatarios.

El método send() acepta como parámetro el email del destinatario, si no se quiere usar el email guardado en la propiedad to.

Con la siguiente estrategia, podemos enviar múltiples mensajes a la vez.

Ejemplo

// lista de direcciones para el mailing // podría venir de una BDD, de una importación de fichero... $direcciones = [ 'robert@juegayestudia.com', 'robert@fastlight.org', 'robert@veinspercubelles.org' ]; // crearemos un nuevo mensaje sin indicar el receptor $email = new Email( '', // receptor (en blanco, de momento) 'Promociones de febrero', // asunto 'Este mes está de oferta el chopped.', // mensaje 'promociones@tiendaonline.com', // emisor del mensaje 'Tu tienda amiga' // nombre del emisor ); // para cada entrada de la lista de direcciones... foreach($direcciones as $direccion){ try{ $email->send($direccion); echo "ENVIADO a $direccion."; // en caso de error... (luego seguirá con la siguiente) }catch(EmailException $e){ echo "ERROR en $direccion."; } }

Fin de la documentación email

Lista de ejemplos.

FastLight Framework 2 DOCS, versión 2.0.10