[[improve]]
SMTP (Simple Mail Transfer Protocol) ist ein Internetprotokoll, das für die **Übertragung von [[email|E-Mails]] zwischen Servern** zuständig ist.
Siehe auch [[imap|IMAP]], [[pop|POP]].
{{smtp_status_codes.pdf}}
SMTP verwendet standardmäßig Port 25 für die Kommunikation. Es gibt jedoch auch [[kryptographie|verschlüsselte]] Varianten des Protokolls, die zusätzliche Sicherheit bieten. SMTP over TLS (SMTPS) verschlüsselt die Verbindung zwischen den Servern, während STARTTLS eine sichere Transportverschlüsselung ermöglicht, die nach der Verbindungsherstellung aktiviert wird.
=====Funktion=====
Der SMTP-Client sendet die E-Mail-Daten an den SMTP-Server in einer speziellen Textform, die als SMTP-Befehle bezeichnet werden. Zu den grundlegenden SMTP-Befehlen gehören "HELO" (Identifikation des sendenden Servers), "MAIL FROM" (Absender der E-Mail), "RCPT TO" (Empfänger der E-Mail) und "DATA" (Übertragung der E-Mail-Nachricht).
Der SMTP-Server überprüft die erhaltenen Befehle und leitet die E-Mail-Nachricht entsprechend weiter. Wenn der SMTP-Server die Nachricht erfolgreich empfängt, wird eine Bestätigung an den sendenden Server gesendet. Falls ein Fehler auftritt, wird eine Fehlermeldung zurückgegeben.
HELO my.domain
AUTH LOGIN ("user:pass" | base64)
MAIL FROM:
RCPT TO:
DATA
From: me@my.domain
To: you@my.domain
Subject: test
send your orders for pizza to the administrator.
.
QUIT
.
bzw.
HELO my.domain
AUTH LOGIN
"user" | base64
"pass" | base64
MAIL FROM:
RCPT TO:
DATA
From: me@my.domain
To: you@my.domain
Subject: test
send your orders for pizza to the administrator.
.
QUIT
.
SMTP ist ein Plaintext Protokoll wie z.b HTTP oder [[sip|SIP]].
$smtpServer = "vie-srv-smtp03" # "relay.akm.at"
$smtpPort = 25 #587
$useSsl = $false
$username = "manuel"
$password = "f@ke"
$from = "winline-crm@akm.at"
$to = "manuel.zarat@akm.at"
$subject = "SMTP Test von PowerShell"
$body = "Dies ist ein Test der SMTP-Verbindung mit STARTTLS und Authentifizierung."
$smtpClient = New-Object System.Net.Mail.SmtpClient($smtpServer, $smtpPort)
$smtpClient.EnableSsl = $useSsl
$smtpClient.Credentials = New-Object System.Net.NetworkCredential($username, $password)
$mailMessage = New-Object System.Net.Mail.MailMessage($from, $to, $subject, $body)
try {
$smtpClient.Send($mailMessage)
Write-Host "Verbindung erfolgreich und E-Mail gesendet."
} catch {
Write-Host "Fehler beim Senden der E-Mail:`n$($_.Exception.Message)"
}