Categorías
Desarrollo

Envío de correos mediante el protocolo SMTP

Para enviar correos a través del protocolo SMTP (Simple Mail Transfer Protocol – Protocolo simple de transferencia de correo) necesitaremos un emisor (que puede ser un cliente de correo, o una aplicación) y un receptor (servidor de correo destino).

El servidor de SMTP se encarga de hacer el relay de correo para aceptar el correo enviado y redirigirlo (en nombre del remitente indicado) hacia el servidor de correo destino, prescindiendo de la infraestructura de correo remitente y solamente necesitando una salida a internet.

La sencillez del envío mediante SMTP facilita la infraestructura necesaria en una organización y reduce el costo de mantenimiento de una infraestructura propia de correo.

La conexión contra el servidor SMTP se ha de hacer desde un cliente o aplicación con salida a internet, a través de los puertos 25, 587 para correos sin seguridad y a través de los puertos 465 para correos con SSL.

En el servidor SMTP conectamos con una credenciales proporcionadas por el excepcional equipo de sistemas. Que diligentemente nos generarán unas nuevas credenciales si fuese necesario.

Con estas credenciales y teniendo los datos de conexión del servidor SMTP:

Parametro Valor
SMTP Server url proporcionada
SMTP Authentication Enabled
SMTP Username xxx@xxx.xxx
SMTP Password ******
SMTP Ports 25, 587 (non-SSL) / 465 (SSL)

Podemos conectar nuestra aplicación o desde código al SMTP para enviar correos.

Un correo, además de su contenido, lleva una serie de parámetros en su empaquetado, por ejemplo, las cabeceras, remitente, receptor, respuesta… vemos las más importantes.

  • Sender: Es quién realmente envía el correo, siempre será el usuario proporcionado para conectar al servidor SMTP.
  • From: Es quién aparecerá cómo remitente del correo en el destino. Aquí se puede especificar cualquier cuenta de correo que queramos (siempre que el dominio exista). Si la cuenta de correo indicada no existe en el dominio, nos podemos encontrar con el problema de no poder recibir respuestas.
  • Reply-to: Indica la dirección de respuesta del correo, en este caso, podemos indicar un FROM ficticio, e indicar una dirección de respuesta correcta, por ejemplo, si nuestro from es no-reply@vitaly.es, y esa cuenta no existiese, podemos indicar el correo de grupo en el campo reply-to: desarrollo@vitaly.es para recibir respuestas.
  • Recipient: El destinatario o destinatarios del correo.

Si ponemos un símil para el correo postal, yo puedo pedirle a un amigo que me envíe una carta por correo, el sender en este caso sería mi amigo, si es un correo certificado, el tendrá que firmar con su nombre y DNI (credenciales de acceso al servidor); el from, sería yo (quién figura en el remitente, y lo que el destinatario verá) y el recipient, el destinatario de la carta.

Así, podemos tener, por ejemplo una cuenta SMTP (Sender) para el departamento de desarrollo, por ejemplo desarrollo@vitaly.es, y, utilizando esas credenciales para conectar contra el servidor SMTP, enviar correos por procesos o por desarrolladores:

Por ejemplo, proceso01@vitaly.es, desarrollador02@vitaly.es

En ese caso, el sender siempre será el mismo, desarrollo@vitaly.es, pero, lo que el destinatario verá es que está recibiendo un correo de proceso01@vitaly.es o de desarrollador02@vitaly.es (from).