Hallo zusammen.
Seit Jahre informiert mich Fhem über leere Batterien der einzelnen Sensoren.
Per Mail bekomme ich die Informationen zugesendet. Funktioniert alles prächtig.
Jetzt will ich mir die Alexa Einkaufsliste auf mein Handy schicken lassen.
Funktioniert auch alles so weit, wenn allerdings Umlaute im Artikel sind, werden in
der Mail nur Hieroglyphen angezeigt.
Meine Einstellungen in Fhem sind
######## DebianMail Mail auf dem RPi versenden ############
sub DebianMail {
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "Fhem\@xxxxxxxx.com";
my $konto = "xxxxxxxxxxxx\@t-online.de";
my $passwrd = "xxxxxxxxxx";
my $provider = "securesmtp.t-online.de:587";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
Log 1, "sendEmail Anhang: $attach";
$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a $attach -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8 );
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 1, "sendEmail returned: $ret"; }
im Log steht noch alles vernünftig
Zitat2024.01.30 19:35:45 1: sendEmail RCP: xxxxxxxxx@xxx.de
2024.01.30 19:35:45 1: sendEmail Subject: Alexa Einkaufsliste
2024.01.30 19:35:45 1: sendEmail Text: Einkaufsliste:\n - Spüli
- öl
2024.01.30 19:35:45 1: sendEmail Anhang:
2024.01.30 19:35:47 1: sendEmail returned: Jan 30 19:35:47 raspberrypi sendEmail[23015]: Email was sent successfully!
Hier stehen die Umlaute korrekt lesbar in der erhaltenen Mail allerdings nicht mehr.
Mein Fhem ist aktuell und läuft auf einem RPI3
Für Tips wäre ich sehr dankbar
Vielen Dank
Rainer
Neugierhalber: zeig doch mal den Mailinhalt
Moin,
es gibt noch die Option den Zeichensatz festzulegen: o message-charset=CHARSET.
Ich habe bei mir: "-o message-charset=utf-8" im Aufruf ergänzt, damit funktioniert es.
Gruß,
Matthias
@MDietrich
habe ich normalerweise auch gesetzt.
Durch das ständige ausprobieren ist es abhanden gekommen und oben nicht drin.
Aber es ist drin und bringt keine Änderung.
In der Mail steht dann folgendes
ZitatBetreff: Alexa Einkaufsliste
Einkaufsliste:
- Spüli
- öl
Zitat von: billy-boy am 30 Januar 2024, 21:18:37Jetzt will ich mir die Alexa Einkaufsliste auf mein Handy schicken lassen.
Hast Du das Darstellungsproblem in dieser Email auch auf anderen Mail-Clients?
Vielleicht suchst Du das Problem einfach an der falschen Stelle und es ist ein Problem auf der Seite Deines Handys, genauer: des Mail-Clients auf dem Handy.
Es ist egal was für ein Handy ob Android oder Iphone.
Ich habe bei gmx mit dem Browser nachgeguckt.
Dort kommen schon die Hyroglyphen an.
Selbst wenn ich ein t-online Mailadresse verwende und dann
per Browser nachgucke.Immer kommen nur die Hyroglyphen an.
Fazit der Pi sendet schon dieses Kauderwelsch.
Gruß
Rainer
Zitat von: billy-boy am 31 Januar 2024, 11:25:32Fazit der Pi sendet schon dieses Kauderwelsch.
Das ist kein Kauderwelsch, das ist Dein korrekter Mailinhalt, aber die Zeichencodierung wird beim Empfänger nicht erkannt/verstanden.
-o tls=auto-o message-charset=utf-8
^^^
Ich hoffe, Du hast da zwischen auto und -o in Wirklichkeit ein Leerzeichen?
Ansonsten könntest Du versuchen, den Text vor dem Verschicken durch decode() zu schicken, vielleicht kommt die Mail dann lesbar an.
Hallo
Zitat von: billy-boy am 31 Januar 2024, 08:57:49- Spüli
Das ü sind in UTF-8 zwei Byte HEX: "C3 BC", die dein RPi so verschickt.
Die beiden Zeichen "Ã und ¼" ergeben sich wenn die Darstellung der beiden Byte nach Latin1 erfolgt.
Zitat von: betateilchen am 31 Januar 2024, 12:57:17Ich hoffe, Du hast da zwischen auto und -o in Wirklichkeit ein Leerzeichen?
Das müsste im Quelltext der empfangenen Nachricht zu sehen sein. Da fehlt dann vermutlich <charset="utf-8">
This is a multi-part message in MIME format. To properly display this message you need a MIME-Version 1.0 compliant Email program.
------MIME delimiter for sendEmail-12345678.87654321
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: 7bit
testmüll
------MIME delimiter for sendEmail-12345678.87654321--
Gruß Ralf
@Betateilchen
ja da befindet sich ein Leerzeichen.
Ist beim Erstellen irgendwie verrutscht.
(Hab ich nachträglich noch verbessert)
@RalfRog
Ja genau "charset=utf-8" fehlt, das wird im Quelltext nicht angezeigt.
aber mehr wie übergeben mit "-o message-charset=utf-8" kann ich ja nicht.
Zitat von: billy-boy am 31 Januar 2024, 14:05:47Ja genau "charset=utf-8" fehlt, das wird im Quelltext nicht angezeigt.
aber mehr wie übergeben mit "-o message-charset=utf-8" kann ich ja nicht.
Hm, was steht denn stattdessen dort? Nix?
Oder:
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
Das charset iso kommt wenn ich "-o message-charset=utf-8" weglasse (nicht überaschend). "iso-8859-1" ist in sendEmail als Default hinterlegt.
92 "message-charset" => 'iso-8859-1', ## Message character-set
Müsste also im Quelltext der Mail zu sehen sein.
Was passiert denn bzw. siehst du wenn du zu Fuß auf der Konsole:
sendEmail -f 'Fhem@xxxxxxxx.com' -t 'xxxxxxxxx@xxx.de' -u 'Test' -m 'Spüli' -s 'securesmtp.t-online.de:587' -xu 'xxxxxxxxxxxx@t-online.de' -xp 'xxxxxxxxxx' -o tls=auto -o message-charset=utf-8
abschickst.
Gruß Ralf
Zitat von: RalfRog am 31 Januar 2024, 15:49:45Das charset iso kommt wenn ich "-o message-charset=utf-8" weglasse (nicht überaschend). "iso-8859-1" ist in sendEmail als Default hinterlegt.
Deshalb ja vorhin schonmal der Tipp, $text einfach vor dem Versand zu decodieren.
Zitat von: betateilchen am 31 Januar 2024, 12:57:17Ansonsten könntest Du versuchen, den Text vor dem Verschicken durch decode() zu schicken, vielleicht kommt die Mail dann lesbar an.
Hallo,
ich glaube, dass das Problem beim Empfänger liegt.
Ich nutze:
qx(sendemail -f '$from' -t '$rcpt' -u '$subject' -m '$text' -a $attach -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=yes -o message-charset=UTF-8);
und schicke aus FHEM
{DebianMail("xxxxx.yyyy\@t-online.de","Subject","ÄÜÖäöü")}
Ich bekomme in Outlook 2017 in Posteingang: Subject ÄÜÖäöü. Wenn ich die Nachricht öffne sehe ich nur: Subject ������
t-Online im Browser ist okay, gmail auf Android ist auch ok.
Kann es daran liegen, das Outlook Probleme mit 'nut Text' Nachrichten hat?
Gruß,
Matthias
Hi,
@Rainer: kann dein System denn überhaupt utf-8? Stichwort: locale ... Was sagt locale -a ?
Bei mir klappt der Unterschied zwischen keine Angabe und "-o message-charset=utf-8" exakt wie es sein soll.
Text im Email: Würz Lächeln bloß
------MIME delimiter for sendEmail-376407.445714907
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
W=C3=BCrz L=C3=A4cheln blo=C3=9F
------MIME delimiter for sendEmail-376407.445714907--
Text im Email Würz Lächeln bloß
------MIME delimiter for sendEmail-653171.229948388
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
W=C3=BCrz L=C3=A4cheln blo=C3=9F
------MIME delimiter for sendEmail-653171.229948388--
Warum steht bei mir Content-Transfer-Encoding: quoted-printable und bei euch Content-Transfer-Encoding: 7bit ?
Gruß Otto
Ich nochmal,
habe gerade ausprobiert:
{DebianMail("xxxx.yyyy\@t-online.de","Subject","<html>ÄÜÖäöü</html>)}
und siehe da, mit den HTML-Tags funktioniert es.
Ich hoffe das hilft weiter
Matthias
Mit den html tags veränderst Du aber vermutlich den mime-type Deiner Nachricht.
Zitat von: betateilchen am 31 Januar 2024, 18:04:48Mit den html tags veränderst Du aber vermutlich den mime-type Deiner Nachricht.
Hat das Nachteile? Evtl. braucht es der Empfänger um den richtigen Typ zu erkennen.
Gruß,
Matthias
Zitat von: Otto123 am 31 Januar 2024, 17:54:57Warum steht bei mir Content-Transfer-Encoding: quoted-printable und bei euch Content-Transfer-Encoding: 7bit ?
Uupps da kommen aber Sachen hoch, die die "banale" Eingangsfrage gar nicht vermuten lassen ;)
Vielleicht lässte sich mit den o-Options ja noch "etwas glatt ziehen".
-o NAME=VALUE advanced options, for details try: --help misc
-o message-content-type=<auto|text|html>
-o message-file=FILE -o message-format=raw
-o message-header=HEADER -o message-charset=CHARSET
-o reply-to=ADDRESS -o timeout=SECONDS
-o username=USERNAME -o password=PASSWORD
-o tls=<auto|yes|no> -o fqdn=FQDN
Gruß Ralf
@RalfRog
bei mir steht überhaupt nichts von text/plain
bei mir steht
ZitatContent-Type: multipart/related; boundary="----MIME delimiter for sendEmail-915740.290264697"
@Otto
locale -a ergibt
ZitatC
C.UTF-8
de_DE.utf8
POSIX
auch mit den html tags klappt es nicht.
Der Quelltext bleibt immer gleich
Ok, ich schlage das jetzt zum dritten (und letzten) Mal vor.
...
Log 1, "sendEmail Anhang: $attach";
$text = Encode::decode("utf-8",$text);
$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a $attach -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8 );
...
Ggf. die Option zum message-charset weglassen.
sorry betateilchen
es gibt Sachen, die kann mann von Unterwegs aus beantworten und es gibt
eben Dinge die kann mann nur machen wenn mann zu Hause vor Ort ist.
Dazu gehört eben dein Tip, den ich gerade ausprobiert habe.
Du hast recht. Mit deinem Tip wird die Mail richtig angezeigt.
Ich habe gemerkt wenn ich alles so sende
Zitat{DebianMail('xxxxxx@xxx.de', 'Alexa Einkaufsliste','-Spüli -Speiseöl')}
wird alles richtig übertragen
sende ich folgender Maßen
Zitat{DebianMail('xxxxxx@xxx.de', 'Alexa Einkaufsliste','Einkaufsliste:\n - [echo:list_mySHOPPING_ITEM]')}
muß vorher decodiert werden.
Schreibe ich das permanent in die 99_myUtils.pm funktioniert der erste Ansatz nicht mehr.
Hallo @billy-boy
Ich muss nochmal kurz nachfragen, ob ich den letzten Post #19 richtig verstanden habe.
Zitat von: billy-boy am 31 Januar 2024, 20:08:39Ich habe gemerkt wenn ich alles so sende
Zitat{DebianMail('xxxxxx@xxx.de', 'Alexa Einkaufsliste','-Spüli -Speiseöl')}
wird alles richtig übertragen
Das funktioniert ganz "normal" ohne decode und kommt lesbar beim Empfänger an.
Ein decode ist dann nötig, wenn für die Message/Mailtext
'Alexa Einkaufsliste','Einkaufsliste:\n - [echo:list_mySHOPPING_ITEM]'
eingesetzt wird.
Gruß Ralf
Hallo Ralf
Ja, das hat du genau richtig verstanden.
Zitat von: billy-boy am 31 Januar 2024, 20:08:39Schreibe ich das permanent in die 99_myUtils.pm funktioniert der erste Ansatz nicht mehr.
Dann tu das auch nicht, denn der Weg von FHEM - sendEmail - Transport - Empfänger ist ja in Ordnung.
Schreib das einfach dorthin wo es hingehört: an die Quelle. Um mit Deinen Worten zu sprechen: der Kauderwelsch entsteht ja offenbar hier -> [echo:list_mySHOPPING_ITEM] :) oder bei Alexa.
@Otto
Das will ich auch garnicht. Hab es aber auf die schnelle ausprobiert und nur berichtet was mir aufgefallen ist.
Zitatder Kauderwelsch entsteht ja offenbar hier -> [echo:list_mySHOPPING_ITEM] :) oder bei Alexa.
So sieht es aus, aber warum stehen dann im Log beim ganz normalem Senden und ohne decode die richtigen Ausdrücke?
findest Du nur heraus, wenn Du die Originaldaten mal durch einen hexdump oder sowas schickst. Es gibt wahrscheinlich mehr als 3 Möglichkeiten deutsche Umlaute zu codieren.
z.B. so, Du brauchst aber im System das debian Package libdata-hexdump-perl
{use Data::HexDump;;HexDump(ReadingsVal('echo','list_mySHOPPING_ITEM','Spüli'))}
{use Data::HexDump;;HexDump('Spüli')}