SMTP Commands Reference
Référence complète des commandes SMTP, codes de réponse et flux de protocole e-mail avec exemples interactifs.
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 usersÀ propos de cet outil
SMTP (Simple Mail Transfer Protocol) est le protocole textuel que les serveurs de messagerie utilisent pour relayer et acheminer les e-mails sur Internet. Les développeurs qui intègrent des fonctions de messagerie comme les administrateurs système qui déboguent la distribution ont tous besoin de bien maîtriser ses commandes fondamentales.
Cette référence répertorie les commandes SMTP essentielles telles que HELO/EHLO, MAIL FROM, RCPT TO, DATA, STARTTLS, AUTH et QUIT, chacune accompagnée de sa syntaxe, d'une brève description et d'un exemple. Vous pouvez l'utiliser pour dérouler une session manuelle via telnet ou openssl, diagnostiquer pourquoi un message a été rejeté, ou simplement apprendre pas à pas le fonctionnement du protocole.
Gardez à l'esprit que les serveurs de messagerie modernes exigent presque toujours STARTTLS pour le chiffrement et AUTH pour l'envoi authentifié, si bien que les sessions non chiffrées sont souvent refusées. Considérez cette page comme une aide à l'apprentissage et à la consultation, et non comme un guide de configuration de messagerie en production.
Questions Fréquentes
Implémentation du Code
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.