Envío de correos electrónicos
¿Va a enviar correos electrónicos como boletines o confirmaciones de pedidos? Nette Framework proporciona las herramientas necesarias con una API muy agradable. Se lo mostraremos:
- cómo crear un correo electrónico, incluyendo archivos adjuntos
- cómo enviarlo
- cómo combinar correos electrónicos y plantillas
Instalación
Descargue e instale el paquete utilizando Composer:
Creación de correos electrónicos
El correo electrónico es un objeto Nette\Mail\Message:
Todos los parámetros deben estar codificados en UTF-8.
Además de especificar destinatarios con el método addTo()
, también puede especificar el destinatario de la
copia con addCc()
, o el destinatario de la copia oculta con addBcc()
. Todos estos métodos, incluido
setFrom()
, aceptan destinatarios de tres formas:
El cuerpo de un correo electrónico escrito en HTML se pasa mediante el método setHtmlBody()
:
No tiene que crear un texto alternativo, Nette lo generará automáticamente por usted. Y si el correo electrónico no tiene un
asunto definido, se tomará del elemento <title>
elemento.
Las imágenes también pueden insertarse muy fácilmente en el cuerpo HTML de un correo electrónico. Basta con pasar la ruta donde se encuentran físicamente las imágenes como segundo parámetro, y Nette las incluirá automáticamente en el correo electrónico:
El algoritmo de incrustación de imágenes admite los siguientes patrones: <img src=...>
,
<body background=...>
, url(...)
dentro del atributo HTML style
y la sintaxis especial
[[...]]
.
¿Puede ser aún más fácil enviar correos electrónicos?
Los correos electrónicos son como postales. Nunca envíes contraseñas u otras credenciales por correo electrónico.
Archivos adjuntos
Por supuesto, puedes adjuntar archivos al correo electrónico. Utilice la dirección
addAttachment(string $file, ?string $content = null, ?string $contentType = null)
.
Plantillas
Si envías correos electrónicos HTML, es una gran idea escribirlos en el sistema de plantillas Latte. ¿Cómo hacerlo?
Archivo email.latte
:
Nette inserta automáticamente todas las imágenes, establece el asunto según el elemento <title>
y genera
un texto alternativo para el cuerpo HTML.
Uso en la aplicación Nette
Si utiliza correos electrónicos junto con Nette Application, es decir, presentadores, es posible que desee crear enlaces en
las plantillas utilizando el atributo n:href
o la etiqueta {link}
. Latte básicamente no los conoce,
pero es muy fácil añadirlos. La creación de enlaces puede hacer objeto Nette\Application\LinkGenerator
, que se
obtiene al pasarlo usando inyección de dependencia.
En la plantilla, el enlace se crea como en una plantilla normal. Todos los enlaces creados sobre LinkGenerator son absolutos:
Envío de correos electrónicos
Mailer es la clase responsable del envío de correos electrónicos. Implementa la interfaz Nette\Mail\Mailer y existen varios mailers listos para usar que presentaremos a continuación.
El framework añade automáticamente un servicio Nette\Mail\Mailer
basado en la configuración al contenedor DI, que se obtiene pasándolo mediante inyección de dependencias.
SendmailMailer
El mailer por defecto es SendmailMailer que utiliza la función PHP mail. Ejemplo de uso:
Si desea configurar returnPath
y el servidor sigue sobrescribiéndolo, utilice
$mailer->commandArgs = '-fmy@email.com'
.
SmtpMailer
Para enviar correo a través del servidor SMTP, utilice SmtpMailer
.
Se pueden pasar los siguientes parámetros adicionales al constructor:
port
– si no se establece, se usará el valor por defecto 25 o 465 parassl
timeout
– tiempo de espera para la conexión SMTPpersistent
– utilizar conexión persistenteclientHost
– designación del clientestreamOptions
– permite establecer opciones de contexto SSL para la conexión
FallbackMailer
No envía correos electrónicos, sino que los envía a través de un conjunto de mailers. Si un mailer falla, repite el intento en el siguiente. Si falla el último, vuelve a empezar desde el primero.
Otros parámetros del constructor incluyen el número de repeticiones y el tiempo de espera en milisegundos.
DKIM
DKIM (DomainKeys Identified Mail) es una tecnología de correo electrónico de confianza que también ayuda a detectar mensajes falsificados. El mensaje enviado se firma con la clave privada del dominio del remitente y esta firma se almacena en la cabecera del correo electrónico. El servidor del destinatario compara esta firma con la clave pública almacenada en los registros DNS del dominio. Al cotejar la firma, se demuestra que el correo electrónico procede realmente del dominio del remitente y que el mensaje no ha sido modificado durante su transmisión.
Puede configurar el mailer para firmar el correo electrónico en la configuración. Si no utiliza la inyección de dependencia, se utiliza de la siguiente manera:
Configuración de
Visión general de las opciones de configuración para el Nette Mail. Si no está utilizando todo el framework, sino sólo esta librería, lea cómo cargar la configuración.
Por defecto, el mailer Nette\Mail\SendmailMailer
se utiliza para enviar correos electrónicos, que no se configura
más. Sin embargo, podemos cambiarlo a Nette\Mail\SmtpMailer
:
Puede desactivar la autenticación de certificados SSL utilizando la opción
context › ssl › verify_peer: false
. Se recomienda encarecidamente no hacer esto ya que hará que la
aplicación sea vulnerable. En su lugar, añadir certificados al
almacén de confianza.
Para aumentar la confianza, podemos firmar los correos electrónicos utilizando la tecnología DKIM:
Servicios DI
Estos servicios se añaden al contenedor DI:
Nombre | Tipo | Descripción |
---|---|---|
mail.mailer |
Nette\Mail\Mailer | Clase de envío de correoelectrónico |
mail.signer |
Nette\Mail\Signer | Firma DKIM |