Eine Email von Script versenden (über SMTP)

J

joekey

Grünschnabel
Hallo,

ich würde gern eine Email vom Shell-Script verschicken. Ich habe mail und mailx auf dem Rechner installiert. Intern innerhalb des netzwerkes kann ich die Mails verschicken. Das Problem ist diese ausserhalb vom Netzwerk zu verschicken. Es hängt mit der SMTP Einstellgungen. Ich muss mich am Ausgangserver mit dem Username und Password authentifizieren.

Könnte mir jemand den Weg schrittweise Erklären? Vor allem würde ich am liebsten eine Möglichkeit präferieren, bei der ich smtp Einstellungen direkt im Script definiere (quasi lokal für den konkreten Versand).

Hier sind die Logindaten zu einem Test-Mailaccount:
Email: **********
User: **********
Pass: editiert und entfernt
Pop-Server: pop.gmx.net
Smtp-Server: mail.gmx.net
IP (mail.gmx.net): 213.165.64.21
IP (mail.gmx.net): 213.165.64.20

Vielen dank.

Joe
 
Zuletzt bearbeitet von einem Moderator:
Hallo
Du willst nicht wirklich, dass alle Welt deine Daten kennt.
Dann kannst du diesen Account gleich in die Tonne treten.
Was ich nach einer Stunde schon anraten würde.

Zu deinem Problem:
Ich kann dir hier mal ein Perlscript anbieten, was du an deine Bedingungen anpassen solltes.
Code:
smtp-auth
Mail versenden

#!/usr/bin/perl
 
use Net::SMTP::SSL;
 
my ($user, $pass, $host, $port);
 
$user = 'username'; # manchmail auch username@domain.tld
$pass = 'password'; # das passwort
$rcpt = 'username@domain.tld'; # volle Empfänger-Adresse
$host = 'mail.gmx.net'; # bzw. dein smtp server
$port = 465; # mögliche ports: 25, 465, 587
 
my $smtp = Net::SMTP::SSL->new( $host, 
                 Port => $port,
                 Debug => 0) or die "$@:$!";
 
if($smtp->auth($user, $pass)) {
  print "SMTP Auth: success.\n";
} else {
    $smtp->quit();
    exit;
}
 
$smtp->mail($rctp);
$smtp->to($rcpt);
$smtp->data;
while (<>) {
    $smtp->datasend($_);
}
$smtp->dataend;
$smtp->quit;

data kommt hier über die Standardeingabe und ist neben deinen Daten auch anzupassen.

Oder du richtest deinen Mailserver als Smarthost ein.
Dazu findest du genügend Hinweise im Netz.

Gruß Wolfgang
 
Hallo Wolfgang,

danke für deine Antwort. Ich habe dein Script in ein File mit der Endung pl geschrieben. Auf dem Server (Unix - Mac) ist Perl installiert. Ein anderes Script der nur eine Zeile ausschreibt funktioniert. Wenn ich dein Script ausführe bekomme ich folgende Meldung:
$ testEmail2.pl
/Users/locadmin/joe/bin/testEmail2.pl: line 1: smtp-auth: command not found

Ist mein erster Script in Perl aber sollten die ersten zwei Zeilen nicht ein Kommentar (also mit Raute #) sein?

Und wenn ich diese Zeilen auskommentiere, bekomme ich folgende Fehler:
$ testEmail2.pl
/Users/locadmin/joe/bin/testEmail2.pl: line 6: use: command not found
/Users/locadmin/joe/bin/testEmail2.pl: line 8: syntax error near unexpected token `$user,'
/Users/locadmin/joe/bin/testEmail2.pl: line 8: `my ($user, $pass, $host, $port);'

Kommt mir vor dass mir noch was grundsätzliches fehlt, weil die commands nicht erkannt werden.

Hättest du da eine Idee?

Danke Joe.
 
Du musst deinen Rechner als Mailserver konfigurieren. Das geht am besten mit postfix - sollte standardmäßig schon installiert sein. Hier wird genau das beschreiben was du suchst:
http://wiki.ubuntuusers.de/Postfix#GMX

Habe ich selbst schon erfolgreich so konfiguriert. Halte dich also an die Installationsschritte.
Dann kannst du auch ganz normal mit mailx via bash oder Script Mails versenden.
 

Ähnliche Themen

Email via Script über Exchange Server versenden (SASL)

Zurück
Oben