SMTP Commands Reference
Referencia completa de comandos SMTP, códigos de respuesta y flujo de protocolo de correo con ejemplos interactivos.
EHLOsessionEHLO <hostname>Extended greeting; identifies the client and requests ESMTP extensions.
EHLO mail.example.comHELOsessionHELO <hostname>Basic SMTP greeting. Use EHLO for modern servers.
HELO mail.example.comQUITsessionQUITClose the SMTP connection gracefully.
QUITSTARTTLSsessionSTARTTLSUpgrade the connection to TLS encryption.
STARTTLSNOOPsessionNOOPNo operation; used to keep the connection alive.
NOOPRSETsessionRSETAbort the current mail transaction and reset the session.
RSETAUTHauthAUTH <mechanism> [credentials]Authenticate the client to the server (PLAIN, LOGIN, CRAM-MD5).
AUTH LOGINMAIL FROMmessageMAIL FROM:<address>Specify the sender envelope address.
MAIL FROM:<sender@example.com>RCPT TOmessageRCPT TO:<address>Specify a recipient envelope address. Can be repeated.
RCPT TO:<recipient@example.com>DATAmessageDATABegin transmitting the message body. End with a line containing only a period.
DATAVRFYsessionVRFY <address>Verify that a mailbox exists (often disabled for security).
VRFY user@example.comEXPNsessionEXPN <list>Expand a mailing list (often disabled for security).
EXPN usersAcerca de esta herramienta
SMTP (Simple Mail Transfer Protocol) es el protocolo basado en texto que los servidores de correo utilizan para retransmitir y entregar mensajes a través de Internet. Tanto los desarrolladores que integran funciones de correo como los administradores de sistemas que depuran la entrega necesitan comprender bien sus comandos esenciales.
Esta referencia enumera los comandos SMTP fundamentales, como HELO/EHLO, MAIL FROM, RCPT TO, DATA, STARTTLS, AUTH y QUIT, cada uno con su sintaxis, una breve descripción y un ejemplo. Puedes usarla para recorrer una sesión manual mediante telnet u openssl, diagnosticar por qué se rechazó un mensaje o simplemente aprender paso a paso cómo funciona el protocolo.
Ten en cuenta que los servidores de correo modernos casi siempre exigen STARTTLS para el cifrado y AUTH para el envío autenticado, por lo que las sesiones sin cifrar suelen ser rechazadas. Considera esta página como una ayuda de aprendizaje y consulta, no como una guía para configurar el correo en producción.
Preguntas Frecuentes
Implementación de Código
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
def send_email_smtp(
smtp_host: str,
smtp_port: int,
username: str,
password: str,
from_addr: str,
to_addr: str,
subject: str,
body: str,
use_tls: bool = True
) -> bool:
"""Send email using SMTP with manual command flow."""
try:
with smtplib.SMTP(smtp_host, smtp_port) as server:
server.ehlo() # EHLO command
if use_tls:
server.starttls() # STARTTLS command
server.ehlo() # Re-EHLO after TLS
server.login(username, password) # AUTH command
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# MAIL FROM, RCPT TO, DATA commands
server.sendmail(from_addr, to_addr, msg.as_string())
return True
except smtplib.SMTPException as e:
print(f"SMTP Error: {e}")
return False
# Test SMTP connection manually
def test_smtp_connection(host: str, port: int) -> dict:
import socket
try:
with smtplib.SMTP(host, port, timeout=5) as server:
banner = server.getwelcome()
ehlo_resp = server.ehlo()
return {
"connected": True,
"banner": banner.decode(),
"extensions": list(server.esmtp_features.keys())
}
except Exception as e:
return {"connected": False, "error": str(e)}
result = test_smtp_connection("smtp.gmail.com", 587)
print(result)Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.