İçeriğe geç
🛠️ToolsShed

SMTP Commands Reference

SMTP komutları, yanıt kodları ve etkileşimli örnekler ile e-posta protokolü akışı için tam referans.

EHLOsession
EHLO <hostname>

Extended greeting; identifies the client and requests ESMTP extensions.

EHLO mail.example.com
HELOsession
HELO <hostname>

Basic SMTP greeting. Use EHLO for modern servers.

HELO mail.example.com
QUITsession
QUIT

Close the SMTP connection gracefully.

QUIT
STARTTLSsession
STARTTLS

Upgrade the connection to TLS encryption.

STARTTLS
NOOPsession
NOOP

No operation; used to keep the connection alive.

NOOP
RSETsession
RSET

Abort the current mail transaction and reset the session.

RSET
AUTHauth
AUTH <mechanism> [credentials]

Authenticate the client to the server (PLAIN, LOGIN, CRAM-MD5).

AUTH LOGIN
MAIL FROMmessage
MAIL FROM:<address>

Specify the sender envelope address.

MAIL FROM:<sender@example.com>
RCPT TOmessage
RCPT TO:<address>

Specify a recipient envelope address. Can be repeated.

RCPT TO:<recipient@example.com>
DATAmessage
DATA

Begin transmitting the message body. End with a line containing only a period.

DATA
VRFYsession
VRFY <address>

Verify that a mailbox exists (often disabled for security).

VRFY user@example.com
EXPNsession
EXPN <list>

Expand a mailing list (often disabled for security).

EXPN users

Bu araç hakkında

SMTP (Simple Mail Transfer Protocol), posta sunucularının e-postaları internet üzerinden aktarmak ve teslim etmek için kullandığı metin tabanlı bir protokoldür. Hem e-posta özelliklerini entegre eden geliştiricilerin hem de teslimat sorunlarını gideren sistem yöneticilerinin temel komutları net biçimde kavraması gerekir.

Bu referans, HELO/EHLO, MAIL FROM, RCPT TO, DATA, STARTTLS, AUTH ve QUIT gibi temel SMTP komutlarını söz dizimi, kısa açıklama ve örnekle birlikte listeler. Bunu telnet veya openssl üzerinden manuel bir oturumu adım adım yürütmek, bir iletinin neden reddedildiğini teşhis etmek ya da protokolün nasıl çalıştığını öğrenmek için kullanabilirsiniz.

Modern posta sunucularının neredeyse her zaman şifreleme için STARTTLS ve kimlik doğrulamalı gönderim için AUTH gerektirdiğini, dolayısıyla şifrelenmemiş düz oturumların çoğu zaman reddedildiğini unutmayın. Bu sayfayı üretim ortamı posta yapılandırması rehberi olarak değil, bir öğrenme ve başvuru aracı olarak değerlendirin.

Sıkça Sorulan Sorular

Kod Uygulaması

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.