Enviando un correo electrónico en seis pasos
Una transacción SMTP es algo relativamente simple (de allí su nombre). El cliente se conecta al servidor remoto, se identifica, le dice a la máquina remota quien está enviando el correo, para quién es y entonces envía el mensaje. Todo esto se encuentra especificado en el RFC821 (si en sus ratos libres, y para pasar el tiempo, decide escribir un cliente de correo no olvide leer con cuidado el RFC821 y todos aquellos RFCs que dependan de él).
Aquí hay un par de detalles que pueden complicar la construcción de su aplicación de correo:
El RFC821
coloca algunos límites a la longitud de los comandos y los mensajes.
Paso 1: conexión al servidor SMTP remoto
De acuerdo al RFC, un servidor SMTP debe escuchar en el puerto 25 sobre el protocolo de transporte TCP, por esta razón un cliente que desee utilizar dicho servicio debe abrir una conexión en ese puerto. Cuando la conexión se realiza exitosamente, el servidor remoto enviará una línea de status con su debido código.
Paso 2: identificación del cliente
Después de conectarse, el siguiente paso es identificarnos. Esto se hace con el comando "HELO" (está bien escrito, es con una sola "L"). El comando completo es:
HELO nombre.de.la.maquina.clienteCRLF
Si el servidor recibe nombres de máquinas falsas puede ser engañado y suplantar a otro cliente de correo (¡¡¡ Un hueco de seguridad !!!). Generalmente los servidores de correo verifican que, por lo menos, el nombre de la máquina esté registrado en el DNS.
Paso 3: identificando el remitente
Ahora el cliente tiene que decir quién (la persona) está enviando el correo. Se hace con el comando "MAIL":
MAIL FROM: <usuario@nombre.algun.servidor.com>CRLF
Lo que está entre los corchetes angulares es un e-mail real (si se coloca vacío <>, no se sabrá dónde debe rebotar el correo en caso de alguna falla).
Paso 4: identificando los destinatarios
Para decir a quién va dirigido el correo se utiliza el comando "RCPT":
RCPT TO: <usuario@nombre.de.otro.servidor.com>CRLF
Aquí la dirección también va entre paréntesis angulares. Ud. puede colocar hasta ? RCPTs por mensaje de E-mail (el número ? debe ser consultado en la tarea).
Como el servidor ya sabe de quién viene el correo y para quién está dirigido (pasos 3 y 4), es hora de enviar su contenido. Para esto se utiliza el comando "DATA". Este comando marca el inicio del mensaje, que termina hasta que se envíe una línea donde el único contenido es un punto (si necesita enviar una línea con un sólo punto(.) como parte del mensaje, debe envíar una línea con doble punto (..) para que el servidor la convierta en un solo punto dentro del mensaje).
DATACRLF
Hola, este es mi mensaje...CRLF
.CRLF
Al terminar, el servidor le enviará un mensaje de respuesta con un código de status.
Paso 6: cerrando la conexión con el SMTP remoto
Para cerrar la conexión abierta en el paso 1, se utiliza el comando "QUIT".
QUITCRLF
Muchas veces los programas envían el comando "QUIT", y terminan la conexión, lo mejor es esperar el código de status del servidor remoto antes de terminar la conexión para salir adecuadamente.
[Anterior] [Índice]
[Siguiente]