Umlaute und msmtp

  • Hallo,

    bei der Mail über den Sonnenertrag meines BKW zum März, hat mstmp den Umlaut 'ä' des Wortes 'März' nicht sauber versendet.

    Kennt ihr eine Option, den Zeichensatz/die codetable passend zu definieren? (Sie steht auf "de utf-8 mit Euro-Zeichen")

    Ich habe in der Konfiguration von msmtp dazu nichts gefunden.

    Computer ..... grrrrrr

  • Rasp-Berlin Ich würde sagen das hat weder was mit msmtp noch mit den locale-Einstellungen zu tun: Das ist ein reines Transportprogramm, das reicht einfach weiter was es übergeben bekommt. Das muss laut SMTP-Protokoll 7-Bit-ASCII sein. Man kann da auch 8-Bit-Daten reinstecken und hoffen, dass das höchstwertige Bit den Transport bis zum Empfänger überlebt, aber garantiert ist das nicht.

    Für andere Kodierungen als ASCII und der entsprechenden Auszeichnung und Kodierung in 7-Bit in der MIME-Nachricht ist das Programm zuständig, welches diese Nachricht erstellt. Da muss ein Header drin sein, der die von ASCII abweichende Zeichenkodierung angibt, und es muss so kodiert werden, dass nur ASCII übertragen wird, beispielsweise als „quoted printable“, und auch diese Information muss in den Headern stehen, damit der Empfänger weiss wie er das wieder in Text umwandeln muss.

    Nochmal extra lustig sind Nicht-ASCII-Zeichen in den Headern, also beispielsweise im Betreff. Da werden die Informationen Zeichenkodierung und Kodierung in ASCII in den Wert des Headers reingebastelt.

    “It is easier to optimize correct code than to correct optimized code.” — Bill Harlan

  • Nochmal extra lustig sind Nicht-ASCII-Zeichen in den Headern, also beispielsweise im Betreff

    Ich habe mir selbst einmal eine Testnachricht geschickt.
    Das merkwürdige ist, dass die Umlaute im Betreff richtig dargestellt werden und im Text nicht. (Thunderbird auf Win-PC)


    Auf meinem Mailprogramm auf dem Smartphone ist auch der Betreff Zerhackt.

  • Franjo G Das ist nicht merkwürdig. Wenn man kaputte Daten rein tut, kann alles mögliche passieren. Man bewegt sich dann ausserhalb der Spezifikation(en), also gibt's da auch nichts an das sich das Mailprogramm halten muss. Falls da 8-Bit-Daten gesendet wurden, dürfte auch jedes beteiligte Programm auf dem Weg vom Absender zum Empfänger auch einfach die höchstwertigen Bits rausfiltern. Was früher auch tatsächlich manchmal passiert ist.

    “It is easier to optimize correct code than to correct optimized code.” — Bill Harlan

  • Das ist nicht merkwürdig. Wenn man kaputte Daten rein tut, kann alles mögliche passieren.

    Es ist merkwürdig, wenn im Betreff der Umlaut normal angezeigt wird, im Inhalt der Mail aber nicht.


    Denn wenn 7-bit, dann doch gefälligst überall.

    (

    Mein Mailprogramm, welches diese Mail empfangen hatte (TB) sagt zu der Mail:

    Die fehlende Daten von der Dachanlage muss ich mir extra ansehen.)

    Skript zur Mail:

    Computer ..... grrrrrr

  • Rasp-Berlin Der Unterschied zwischen Betreff und Textinhalt ist nicht wirklich merkwürdig wenn man weiss, dass das unterschiedlich behandelt werden muss.

    Alle drei Header in dem Bildschirmfoto sind nicht von msmtp, das heisst die hat irgendein anderes Programm da nachträglich eingefügt. Ein Server auf dem Weg, oder der Mail-Client.

    Content-Type könntest Du selbst einfügen, aber dann mit UTF-8 statt ISO-8859-1, denn die Daten liegen in UTF-8 vor. Und Content-Transfer-Encoding solltest Du auch mit dem dort zu sehenden Wert einfügen.

    März im Betreff könnte man so kodieren: =?utf-8?b?TcOkcno=?=, oder einen allgemeinen UTF-8 kodierten Betreff Base64 kodieren und statt TcOkcno= dort einsetzen.

    Code
    $ echo -n März | base64
    TcOkcno=

    $monat und $vormonat haben beide den gleichen Wert‽

    “It is easier to optimize correct code than to correct optimized code.” — Bill Harlan

  • Rasp-Berlin In der scp-Zeile werden $zielpfad_server_jahr und $datum_jahr verwendet die es nicht gibt. Dafür gibt es beide Namen ohne das _jahr am Ende und die werden nirgends verwendet‽

    Name, Zahl, und Jahr vom vorherigen Monat kann man mit *einem* date-Aufruf ermitteln.

    Beim Ertrag ist es unnötig umständlich mit einem AWK-Programm die dritte Spalte zu filtern und diese Werte dann in einem weiteren AWK-Programm zu summieren. Und das ersetzen von . durch , kann man auch gleich in dem AWK-Programm erledigen. Rechnen kann AWK auch, kein bc nötig, und auch printf gibt es in AWK.

    Der Mailtext ist einfacher als Here-Document einzugeben und IMHO auch zu lesen.

    Header werden vom Inhalt der Mail durch eine Leerzeile getrennt. Das die Mail trotzdem so raus geht ist wieder ein bisschen Glück.

    Ungetestet:

    “It is easier to optimize correct code than to correct optimized code.” — Bill Harlan

  • Hier ein kleines Hilfs-Script, was ich gerade zusammengezimmert habe.

    Es nimmt auf der Kommandozeile eine Betreffzeile entgegen und wandelt sie - wenn erforderlich - um,
    so dass das Ergebnis als E-Mail Betreffzeile, bei der die Umlaute erhalten bleiben, verwendet werden kann.

    Bash
    pi@pi48:~ $ ./mksubject.sh  "Test Ä Ö Ü"
    =?UTF-8?Q?Test =C3=84 =C3=96 =C3=9C?=
    
    pi@pi48:~ $ echo "Test Ä Ö Ü" | ./mksubject.sh
    =?UTF-8?Q?Test =C3=84 =C3=96 =C3=9C?=
    
    pi@pi48:~ $ ./mksubject.sh  "Test normal"
    Test normal

    Es wird intern das Programm recode verwendet, welches eventuell nachinstalliert werden muss.
    Da recode vielseitig einsetzbar ist, sollte es sowieso zum Standard-Werkzeugkasten gehören... (sudo apt install recode)

    Edited once, last by simonz: Verwendung in einer Pipe ergänzt. (April 4, 2024 at 1:44 PM).

  • Sowas nennt man Obfuscating :lol: Ist ja gerade in aller Munde wie man sowas macht :shy:

    ^^

    Ich wollte Base64 im Quelltext zumindest erwähnt haben:
    Erstens weil es hier im Thread schon genutzt wurde und zweitens weil es laut RFC neben Quoted Printable möglich ist:

    Quote from rfc1342

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!