pollekowski
Goto Top

Mail aus shell Script versenden. Mit HTML Body und Attachment.

Mail aus Script versenden. Portable Konfiguration!

Hallo,

Ich suche ein Programm / Script um aus der Shell über SMTP eine Email versenden zu lassen.
Das kniffelige ist, dass sie einen HTML Body und ein Attachment haben muss.

Damit scheidet Telnet / NetCat ja schonmal aus.

Am vielversprechendsten sah bisher sendEmail aus.

sendEmail -f nagios@domain1.com -t sp@domain2.de -u subject test -s mail.domain2.de:25 -a Logfiles/21_04_2010/10.108.0.254.txt -o message-file=tmp/10.108.0.254.html -o message-charset=utf8

Nur leider schreibt sendEmail den Inhalt des HTML als Text in den Body und entfernt die Zeilennumbrüche aus meinem txt File.

Hat jemand ne Idee wie man das sonst noch lösen könnte?

PS.: System Debian Lenny / Script soll portabel sein. Also am besten OHNE tiefgreifende Config des Systems. Am besten nur im Script.

Gruss & Dank Pollekowski

Content-ID: 141158

Url: https://administrator.de/forum/mail-aus-shell-script-versenden-mit-html-body-und-attachment-141158.html

Ausgedruckt am: 22.12.2024 um 21:12 Uhr

laster
laster 21.04.2010 um 15:42:21 Uhr
Goto Top
Hallo Pollekowski,

ich kenne das Tool sendEmail nicht, aber kannst Du die HTML-Datei nicht als Anhang ranhängen?
Ansonsten sieht eine HTML-Mail beispielsweise wie folgt aus:
...
MIME-Version: 1.0
Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>
...

Der Content-Type (im Mail Body) ist nötig.

vG
LS
Pollekowski
Pollekowski 21.04.2010 um 15:49:24 Uhr
Goto Top
Nach etwas hin und her hab ich nun herausgefunden, dass sendEmail (http://caspian.dotconf.net/menu/Software/SendEmail/) seit Version 1.56 (Sep 8, 2009) in der Lage ist HTML Body zu erkennen und zu verschicken.

Mir ist nur aufgefallen, dass es mein HTML nicht korrekt überträgt. Es macht aus
.orange {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
color: #FF9900;
}
folgendes:
orange {
font-family: Arial, Helvetica, sans-serif;
font-size: 14px;
color: #FF9900;
}

Einfach zu beheben durch "..orange" im zu versendenden Template. Dann überträgt er ".orange"

Jetzt bleibt noch das Problem, dass sendEmail aus meinem Anhang die Zeilenumbrüche entfernt.

Es macht aus:
11:31:00 52.9 ms
11:31:10 52.8 ms
11:31:20 52.4 ms
11:31:30 61.4 ms
11:31:41 52.9 ms
folgendes

11:31:00 52.9 ms11:31:10 52.8 ms11:31:20 52.4 ms11:31:30 61.4 ms11:31:41 52.9 ms

Hat dafür vielleicht jemand ne Idee?
Pollekowski
Pollekowski 21.04.2010 um 18:55:51 Uhr
Goto Top
Also... Lösung des Problems war, das Unix und DOS unterschiedlich mit txt Files umgehen.

Windows macht am Ende der Zeile für jeden Zeilenumbruch ein "carriage return" UND ein "line feed". Unix aber nur ein "line feed".
So sind also die Zeilenumbrüche verschwunden.

Lösung um sie dennoch in beiden Welten lesen zu können ist ein unix2dos (oder dos2unix) converter.

In meinem Fall wandle ich die Datei vor dem Versand mit "unix2dos 10.108.0.254.txt" in ein windows kompatibles Format und schon klappts.
dog
dog 21.04.2010 um 19:26:35 Uhr
Goto Top
Und damit hast du zwei Grundregeln von SMTP entdeckt:

  • Alle Line-Endings müssen CRLF sein
  • . als Beginn einer Zeile ist der DATA-Termination-Character und muss verdoppelt werden um ihn zu escapen

face-smile