SMTP Commands Reference
Vollständige Referenz für SMTP-Befehle, Antwort-Codes und E-Mail-Protokoll-Fluss mit interaktiven Beispielen.
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Über dieses Tool
SMTP (Simple Mail Transfer Protocol) ist das textbasierte Protokoll, mit dem Mailserver E-Mails über das Internet weiterleiten und zustellen. Sowohl Entwickler, die E-Mail-Funktionen einbinden, als auch Systemadministratoren, die die Zustellung debuggen, müssen die grundlegenden Befehle sicher beherrschen.
Diese Referenz listet die wesentlichen SMTP-Befehle wie HELO/EHLO, MAIL FROM, RCPT TO, DATA, STARTTLS, AUTH und QUIT auf, jeweils mit Syntax, einer kurzen Beschreibung und einem Beispiel. Sie können damit eine manuelle Sitzung über telnet oder openssl Schritt für Schritt durchspielen, diagnostizieren, warum eine Nachricht abgelehnt wurde, oder einfach die Funktionsweise des Protokolls erlernen.
Beachten Sie, dass moderne Mailserver fast immer STARTTLS für die Verschlüsselung und AUTH für den authentifizierten Versand voraussetzen, sodass unverschlüsselte Klartextsitzungen häufig abgewiesen werden. Betrachten Sie diese Seite als Lern- und Nachschlagehilfe und nicht als Anleitung für die Mailkonfiguration im Produktivbetrieb.
Häufig gestellte Fragen
Code-Implementierung
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.