Direct Mail admite SMTP, lo que permite enviar correos electrónicos mediante programación con la biblioteca SMTP de cualquier lenguaje o herramientas estándar de línea de comandos.
Requisitos previos
Antes de enviar correos electrónicos por SMTP, configure una contraseña SMTP para su dirección de remitente.
Inicie sesión en la consola de Direct Mail.
En el panel de navegación izquierdo, haga clic en Sender Addresses.
Localice la dirección de remitente que desea usar y haga clic en Set SMTP Password en la columna Actions.
Introduzca una contraseña SMTP y haga clic en OK.
Funcionamiento del envío SMTP
El protocolo Simple Mail Transfer Protocol (SMTP) transfiere mensajes mediante un intercambio de comandos y respuestas entre un cliente y un servidor. El cliente envía un comando y el servidor devuelve una confirmación. El remitente controla este proceso.
Para consultar la especificación completa del protocolo, revise RFC5321.
Los servidores SMTP se clasifican en dos categorías:
smtpd (servidor de envío de correo): requiere autenticación del remitente antes de aceptar mensajes salientes.
mx (servidor de recepción de correo): acepta mensajes entrantes entregados desde dominios externos a usuarios locales.
El servidor de Direct Mail es un servidor smtpd. El nombre de usuario de autenticación debe coincidir exactamente con la dirección de remitente, y la contraseña es la que configuró en la consola.
Para enviar correos electrónicos desde el código de una aplicación, use una biblioteca SMTP correspondiente a su lenguaje en lugar de comandos SMTP sin procesar. Consulte SMTP call examples.
Detalles de conexión
|
Parámetro |
Valor |
|
Host |
|
|
Puerto (sin cifrar) |
|
|
Puerto (TLS/SSL) |
|
|
Autenticación |
AUTH LOGIN con nombre de usuario y contraseña codificados en Base64 |
|
Nombre de usuario |
Su dirección de remitente (por ejemplo, |
|
Contraseña |
La contraseña SMTP configurada en la consola de Direct Mail |
Flujo de sesión SMTP
Cada sesión SMTP sigue esta secuencia:
Conéctese al servidor SMTP mediante
telnet(sin cifrar) oopenssl s_client(TLS).Envíe
EHLOpara identificar al cliente y negociar capacidades.Envíe
AUTH LOGINy proporcione las credenciales codificadas en Base64.Envíe
MAIL FROMpara especificar la dirección del remitente.Envíe
RCPT TOpara especificar la dirección del destinatario.Envíe
DATAseguido de los encabezados y el cuerpo del mensaje.Envíe
.(un punto solo) para indicar el final del cuerpo del mensaje.Envíe
QUITpara cerrar la sesión.
Ejemplos
A continuación, los ejemplos muestran sesiones SMTP completas mediante herramientas de línea de comandos. S: representa la respuesta del servidor; C: representa el comando del cliente. En Linux, use echo -n Content|base64 para codificar valores en Base64.
Sin cifrar (puerto 80)
$telnet smtpdm.aliyun.com 80
S:220 smtp.aliyun-inc.com MX AliMail Server(127.0.0.1)
C:EHLO test.com
S:250-smtp.aliyun-inc.com
S:250-8BITMIME
S:250-AUTH=PLAIN LOGIN XALIOAUTH
S:250-AUTH PLAIN LOGIN XALIOAUTH
S:250-PIPELINING
S:250 DSN
C:AUTH LOGIN
S:334 dXNlcm5hbWU6
C:YSoqKkBleGFtcGxlLm5ldA== Note: The Base64 encoding of the username a***@example.net.
S:334 UGFzc3dvcmQ6
C:dGVzdA== Note: The Base64 encoding of the user password test.
S:235 Authentication successful
C:MAIL FROM: <a***@example.net> Note: Enclose the sender address in angle brackets (<>).
S:250 Mail Ok
C:RCPT TO: <a***@example.net>
S:250 Rcpt Ok
C:DATA
S:354 End data with <CR><LF>.<CR><LF>
C:subject: test
C:from: <a***@example.net>
C:to: <a***@example.net>
C:
C:test
C:.
S:Data Ok: queued as freedom ###envid=148316944
C:QUIT
S:221 Bye
Cifrado (puerto 465, TLS)
Primero, conéctese con OpenSSL. Elija uno de los siguientes comandos según la versión de TLS que desee usar:
openssl s_client -connect smtpdm.aliyun.com:465 -crlf
or
openssl s_client -connect smtpdm.aliyun.com:465 -tls1 -cipher AES128-SHA -crlf
openssl s_client -connect smtpdm.aliyun.com:465 -tls1_1 -cipher AES128-SHA -crlf
openssl s_client -connect smtpdm.aliyun.com:465 -tls1_2 -cipher AES128-GCM-SHA256 -crlf
openssl s_client -connect smtpdm.aliyun.com:465 -tls1_3 -cipher AES128-GCM-SHA256 -crlf
Una vez que OpenSSL establezca la conexión, introduzca los siguientes comandos en la misma ventana, uno por línea:
$openssl s_client -connect smtpdm.aliyun.com:465 -crlf
***
***
***
S:220 DirectMail Smtpd Server(127.0.0.1)
C:EHLO test.com
S:250-smtp.aliyun-inc.com
S:250-8BITMIME
S:250-AUTH=PLAIN LOGIN XALIOAUTH
S:250-AUTH PLAIN LOGIN XALIOAUTH
S:250-PIPELINING
S:250 DSN
C:AUTH LOGIN
S:334 dXNlcm5hbWU6
C:YSoqKkBleGFtcGxlLm5ldA== Note: The Base64 encoding of the username a***@example.net.
S:334 UGFzc3dvcmQ6
C:dGVzdA== Note: The Base64 encoding of the user password test.
S:235 Authentication successful
C:MAIL FROM: <a***@example.net> Note: Enclose the sender address in angle brackets (<>).
S:250 Mail Ok
C:rcpt to: <a***1@example.net> Note: Use lowercase for rcpt to. Uppercase may not be recognized.
S:250 Rcpt Ok
C:DATA
S:354 End data with <CR><LF>.<CR><LF>
C:subject: test
C:from: <a***@example.net>
C:to: <a***1@example.net>
C:
C:test
C:.
S:250 Data Ok: queued as freedom ###envid=600000105713504612
C:QUIT
S:DONE
Cuerpo del mensaje y MIME
Los ejemplos anteriores usan un cuerpo de texto plano. Para correos electrónicos con formato enriquecido (HTML, archivos adjuntos, asuntos codificados), formatee el mensaje conforme a la especificación Multipurpose Internet Mail Extensions (MIME). Un formato MIME correcto reduce la probabilidad de que el servidor de correo del destinatario marque el mensaje como spam.
Para consultar la especificación MIME, revise RFC2045. También puede usar las bibliotecas específicas de cada lenguaje incluidas en los ejemplos SMTP de Direct Mail para crear mensajes codificados en MIME.
Para ver un ejemplo paso a paso, consulte How do I send an email with an attachment using SMTP?