#!/usr/bin/expect

package require base64


# SMTP-Server und Port definieren
set smtp_server "172.16.3.33"
set smtp_port "25"
set timeout 25

# Absender, Empfänger und Nachricht
set sender $env(SMTP_SENDER)
set recipient $env(SMTP_RECIPIENT)
set message "Subject: Test Email\r\n\r\nThis is a test email sent via an expect script."

set smtp_user $env(SMTP_USER)
set smtp_pass $env(SMTP_PASS) 

set smtp_user_64 [base64::encode $smtp_user]
set smtp_pass_64 [base64::encode $smtp_pass]


# Verbindung herstellen
spawn nc -C $smtp_server $smtp_port

# Begrüßung vom Server erwarten
expect "220 *"

# HELO/EHLO senden
send "EHLO baikonur\n"
expect "250 *"

if {[info exists smtp_user] && $smtp_user ne ""} {
  send "AUTH LOGIN\n"
  expect "334 VXNlcm5hbWU6"

  send "$smtp_user_64\n"
  expect "334 UGFzc3dvcmQ6"

  send "$smtp_pass_64\n"
  expect "235 2.7.0 Authentication successful"
} else {
  puts "skip authentication"
}

# Absender definieren
send "MAIL FROM:<$sender>\n"
expect "250 *"

# Empfänger definieren
send "RCPT TO:<$recipient>\n"
expect "250 *"

# Datenübertragung starten
send "DATA\n"
expect "354 *"

# Nachricht senden und Übertragung abschließen
send "$message\n.\n"
expect "250 *"

# Verbindung schließen
send "QUIT\n"
expect "221 *"

# Beenden
interact