E-Mail-Versand mit Anhang per Skript

Status
Für weitere Antworten geschlossen.

robot456

Benutzer
Mitglied seit
30. Dez 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo,

ich habe ein Skript erstellt, welches einmal in der Woche ausgeführt wird und einige Dateien erstellt.
Diese Dateien würde ich gerne per E-Mail an mich verschicken.

Ich habe gesehen, dass es möglich ist Nachrichten (darunter auch E-Mails) über die interne Benachrichtigungszentrale zu versenden.
Allerdings habe ich keine Möglichkeit gefunden diesen Nachrichten einen Anhang zu übergeben.

Gibt es eine andere Möglichkeit eine E-Mail mit Anhang zu verschicken (am besten ohne, dass zusätzliche Pakete installiert werden müssen)?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Schau mal hier. Und mit dem Schalter -a solltest Du bei sendmail auch noch ein Attachement anhängen können.
 

robot456

Benutzer
Mitglied seit
30. Dez 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Vielen Dank, ich werde es am Wochenende mal Testen.
 

robot456

Benutzer
Mitglied seit
30. Dez 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo,

also ich habe es hinbekommen, dass die Mail verschickt verschickt wird, allerdings ohne Anhang. Laut manual hat sendmail auch keinen Schalter für Attachements.
Habe ich etwas übersehen?
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
Mmh, ok - schau mal hier zur Notation. Wenn das nicht weiterführt, dann auch mal hier.
 

robot456

Benutzer
Mitglied seit
30. Dez 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Die Beispiele aus dem ersten Link beziehen sich auf mail, mailx oder mutt. Diese sind nicht auf der DS installiert. Das Skript aus dem zweiten Link würde funktionieren, nehme ich an, allerdings wird dort base64 zum codieren der Datei verwendet, welches ebenfalls nicht auf der DS vorhanden ist.
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414
So, hier ist jetzt ein letzter Link, den ich über Tante Google für Dich herausgesucht habe - der funktioniert. :)
 

robot456

Benutzer
Mitglied seit
30. Dez 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Auch sendEmail ist nicht in der DS verfügbar.

Allerdings habe ich herausgefunden, dass openssl auch ein base64 encoding unterstützt.

Hier mein fertiges Skript:
#!/bin/ash
set -e # Beendet das Sktipt bei einem Fehler

# Dateipfade
DATEI1="/volume1/ordner/datei1.log"
DATEI2="/volume1/ordner/datei2.log"
ARCHIV="/volume1/ordner/daten.zip"

# Dateien erstellen ...

# Archiv erstellen
/usr/syno/bin/7z a -tzip -pGEHEIM -mem=AES256 $ARCHIV $DATEI1 $DATEI2

# Mailparameter
ABSENDER_NAME="DiskStation"
ABSENDER="absender@mail.com"
EMPFAENGER="empfaenger@mail.de"
BETREFF="Hier sind die Dateien"
NACHRICHT="Dateien erfolgreich erstellt."
ANHANG=$ARCHIV
BOUNDARY="ZZ_/afg6432dfgkl.94531q"

# Archiv verschicken
sendmail -F $ABSENDER_NAME -f $ABSENDER -t $EMPFAENGER << MAIL
Subject: $BETREFF
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=$BOUNDARY

--$BOUNDARY
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

$NACHRICHT

--$BOUNDARY
Content-Type: application/zip
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=$(basename $ANHANG)

$(openssl enc -base64 -in $ANHANG)

--$BOUNDARY--

MAIL


Vielen Dank für die Hilfe!

PS: Es wurde hier zwar nicht erwähnt, aber damit das mit dem Mail versenden überhaupt klappt, muss das Paket E-Mail-Server installiert und entsprechend konfiguriert werden.
 

Frogman

Benutzer
Mitglied seit
01. Sep 2012
Beiträge
17.485
Punkte für Reaktionen
8
Punkte
414

snowbeachking

Benutzer
Mitglied seit
26. Dez 2011
Beiträge
155
Punkte für Reaktionen
0
Punkte
16
Hallo zusammen,

stehe vor der selben Herausforderung. Möchte Dateien (zwei und kein ZIP) vie E-Mail an mich schicken. Habe diesen Artikel gefunden: https://forum.synology.com/enu/viewtopic.php?t=79334
Aber leider bin ich nicht in der Lage den Transfer für mich hinzubekommen. Wer könnte mir hierbei behilflich sein?

Danke und Grüße
 

snowbeachking

Benutzer
Mitglied seit
26. Dez 2011
Beiträge
155
Punkte für Reaktionen
0
Punkte
16
Guten Morgen,

habe das Skript im Aufgabenplaner eingefügt und es ausgeführt, und bis auf die Systemmeldung ist nichts passiert. Also keine E-Mail verschickt. Also das funktioniert erstmal nicht. Und dann will ich ja noch Anhänge verschicken, das wüsste ich auch nicht wie das mit diesem Weg zu machen wäre.

Danke für deine Hilfe im Voraus.
 

robot456

Benutzer
Mitglied seit
30. Dez 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Das E-Mail Server Paket hast du aber drauf, oder?
Versuche das Skript mal über die Konsole aufzurufen. Da müsstest du eine Fehlermeldung bekommen, falls etwas nicht funktioniert. Oder dann Schritt für Schritt in der Konsole ausführen, statt als Skript, um zu testen bei welchem Befehl es nicht geht.
 

snowbeachking

Benutzer
Mitglied seit
26. Dez 2011
Beiträge
155
Punkte für Reaktionen
0
Punkte
16
Das Paket habe ich nicht installiert. Der Clou mit dem Skript ist, dass es mit dem Synology internen Bordmitteln möglich sein soll. Die SMTP Parameter sind bei mir im Menüpunkt Benachrichtigung hinterlegt.
 

robot456

Benutzer
Mitglied seit
30. Dez 2012
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Das habe ich auch versucht, bin aber nicht drum herum gekommen ein weiteres Paket zu installieren. Ich glaube, dass der Versand von Anhängen nicht mit Bordmitteln funktioniert.
Zumindest kann man ja dieses Paket über das Paket-Zentrum installieren und braucht dafür keine weiteren "Paket-Manager".
 

snowbeachking

Benutzer
Mitglied seit
26. Dez 2011
Beiträge
155
Punkte für Reaktionen
0
Punkte
16
E-Mail mit diesem Code erfolgreich verschickt, jetzt noch schicker machen und Anhang mitnehmen.
Code:
/usr/bin/php -r "mail('recipient@somewhere.com', 'subject', 'message body', 'From: sender@somewhere.com');";
 

snowbeachking

Benutzer
Mitglied seit
26. Dez 2011
Beiträge
155
Punkte für Reaktionen
0
Punkte
16
Code:
taskname="Email test task"
out=$(/bin/echo "Email test output"); status=$?
host=$(/bin/hostname)
source /etc/synoinfo.conf
headers='printf "From: %s - %s <%s>\r\n" "$host" "$mailfrom" "$eventuser"'
if [ ${#eventmail2} -gt 0 ]
then
to='printf "%s, %s" "$eventmail1" "$eventmail2"'
else
to=$eventmail1
fi
outcome="failed"
if [ ${status} -eq 0 ]
then
outcome="been completed"
fi
outcome='printf "%s on %s has %s" "$taskname" "$host" "$outcome"'
subject='printf "%s %s" "$eventsubjectprefix" "$outcome"'
body='printf "Sehr geehrter Benutzer,\n\n%s.\n\nTask: %s\n\nMit freundlichen Gren,\nSynology DiskStation\n\n%s" "$outcome" "$taskname" "$out"'
/usr/bin/php -r "mail('$to', '$subject', '$body', '$headers');"

Mit diesem Code klappt es auch wenn man in der letzten Zeile das $to mit einer E-Mail ersetzt. Die E-Mail sieht übrigens auch gar nicht gut aus. Kann mir jemand helfen das Skript zu korrigieren, sodass es auch mit $to funktioniert, ich nehme stark an, dass die definierten variable nichts gescheites ausgeben. Diese müsste man wohl korrigieren, nur mit was?

Dankbar für jede Hilfe.


Mal ne ganz andere Idee:

In der Task Konfiguration im Aufgabenplaner kann ich "Ausführungsdetails per E-Mail senden". Jetzt die andere Frage: Könnte ich per Skript dieser E-Mail Dateien anhängen?
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat