FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Knallfrosch am 27 Juli 2024, 11:22:28

Titel: [Gelöst] Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: Knallfrosch am 27 Juli 2024, 11:22:28
Hallo zusammen,

ich sende mir aus FHEM eine eMail mit versch. Readings.

Das sieht wie folgt aus:

exmail('meine@meine.meine', 'Solarertrag+Stromverbrauch', "$datum_2\nErtrag Solarbank: $Ertrag1 \nErtrag Hoymiles: $Ertrag2 \nGesamt Tag: $ErtragTG kWh
 \nEinsparung: $Ersparnis EUR \nEingespeist Heute: $EinspDay \nStromverbrauch Heute: $StromDay \n\nIm $Monatsnamen[$Monat-1] \nErzeugung: $ErtragMG
 \nErsparnis: EUR $ErsparnisM \nStromverbrauch: $StromMon \nEingespeist Monat: $EinspMon")}
Nun würde ich gerne das $datum_2 und den $Monatsnamen fett, sowie $EinspDay in rot darstellen.

Kann mit bitte jemand helfen, wie ich das umsetzen kann!?

Vielen Dank.

Grüße
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: eisman am 27 Juli 2024, 11:28:14
hi,

etwa so:

sub MailTextHof($$$) {
  my ($eMail,$subject,$Keller) = @_;
  my $STRG1 = sub_TimeStampDatum( ReadingsTimestamp( $Keller,"state",'00.00.'));
  my $STRG2 = sub_TimeStampZeit(  ReadingsTimestamp( $Keller,"state",'00:00' ));
 
  my $HTML = '<!DOCTYPE html>' .
'<html>' .
      '<head> <title>Smarthome</title> </head>' .
      '<body >' .
        '<h1 style="background-color:blue;color:white;font-family:verdana;text-align:center;">Achtung</h1>' .
        '<p style="background-color:blue;color:white;text-align:right;">Ma, ' . $STRG1 . ' um ' . $STRG2 . '</p>' .
        '<p ><b>Die Hoftür ist seit 30min geöffnet!!</b></p>' .
        '<p > </p>' .
        '<p >mit freundlichen grüßen</p>' .
        '<p >Ihr Smarthome Server</p>' .
      '</body>' .
'</html>';
  Log 1, "MailTextHof returned: $eMail // $subject // $Keller ";
  DebianMail($eMail,$subject,$HTML);
  return 0;
}

gruss
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: Knallfrosch am 27 Juli 2024, 12:05:28
Hallo,

also wenn ich das richtig vestehe wird hinter $myHTML definiert, dass die Mail im html-Format versendet werden soll und dort dann auch die Mail quasi geschrieben und entsprechend mit den html-Befehlen formatiert.

Wenn ich das bei mir versuche angepasst einzubauen, wird aber keine Mail verschickt.

Ich werde mal noch etwas probieren und dann den kompletten Code hier einstellen.
Vielleicht fällt dann auch der Fehler auf.


Grüße
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: Knallfrosch am 27 Juli 2024, 12:43:51
Ich habe nun einiges versucht, aber finde meinen Fehler nicht.

Die Mail wird nun verschickt, allerdings ist sie leer.

Kann mir bitte jemand bei der Fehlersuche helfen?



Solarertrag_Log:* {my $Ertrag1 = sprintf "%.2f kWh" ,ReadingsVal("1_Solarertrag_Solix","energyDay",0)/1000;
my $Ertrag2 = sprintf "%.2f kWh" ,ReadingsVal("2_Solarertrag_Hoymiles","ENERGY_Today",0);
my $ErtragTG = $Ertrag1+$Ertrag2;
my $ErtragMG = sprintf "%.2f kWh" ,ReadingsVal("Solarmessung","statEnergyMonth",0)/1000+sprintf "%.2f kWh" ,ReadingsVal("2_Solarertrag_Hoymiles","statENERGY_TotalMonth",0);
my $EinspDay = sprintf "%.2f kWh" ,ReadingsVal("Stromzaehler","statZaehler_wirkenergie_totalDay",0);
my $EinspMon = sprintf "%.2f kWh" ,ReadingsVal("Stromzaehler","statZaehler_wirkenergie_totalMonth",0);
my $Ersparnis = $ErtragTG*0.325;
my $ErtragG = sprintf "%.2f kWh" ,ReadingsVal("Solarertrag","energy",0)/1000;
my $ErsparnisG = sprintf "%.2f EUR" ,ReadingsVal("Solarertrag","ersparnis",0);
my $TageG = sprintf "%.f Tagen" ,ReadingsVal("Solarertrag","Tage",0);
my $ErtragM = sprintf "%.2f kWh" ,ReadingsVal("Solarertrag","energyMonth",0)/1000;
my $ErsparnisM = $ErtragMG*0.325;
my $StromDay = sprintf "%.2f kWh" ,ReadingsVal("Stromzaehler","statZaehler_zaehlerstand_totalDay",0);
my $StromMon = sprintf "%.2f kWh" ,ReadingsVal("Stromzaehler","statZaehler_zaehlerstand_totalMonth",0);

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,
    $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat += 1;
$Jahrestag += 1;
$Jahr += 1900;
 
my @Wochentage = qw(Sonntag Montag Dienstag Mittwoch Donnerstag Freitag Samstag);
my @Monatsnamen = qw(Januar Februar März April Mai Juni Juli August September Oktober November Dezember);
 

my $datum_2 = sprintf("%s %2d. %s% 04d",
   $Wochentage[$Wochentag],
   $Monatstag,
   $Monatsnamen[$Monat-1],
   $Jahr,

my $Text = '<!DOCTYPE html>' .
'<html>' .
      '<head> <title>Zählerwerte</title> </head>' .
      '<body >' .
        '<h1 style="background-color:blue;color:white;font-family:verdana;text-align:center;">Zählerwerte</h1>' .
        '<p ><b>Die Ersparnis heute ist $Ersparnis  $</b></p>' .
        '<p > </p>' .
        '<p >Dies ist eine Testmail</p>' .
        '<p >FHEM</p>' .
      '</body>' .
'</html>'

);

exmail('Meine@meine.de', 'Solarertrag+Stromverbrauch', "$Text")}
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: eisman am 27 Juli 2024, 14:13:03
hi,


######## DebianMail  Mail auf dem RPi versenden ############
# $provider für SMTP Server anpassen.
# Einmal in der FHEM Kommandozeile, user und password anpassen:
# {setKeyValue("myEmailKonto",'xxx.xxx@xxx.de');;setKeyValue("myEmailPasswrd",'xxxxxxxx')}
sub DebianMail {
  my $rcpt     = shift;
  my $subject  = shift;
  my $text     = shift;
  my $attach   = shift;
  my $ret      = "";
  my $error;
  my $konto    = 'xxx.xxx@xxx.xx';
  my $passwrd  = '.xxxxxxxxxx';
  my $from     = 'xxx.xxx@xxx.xx';         # or use different KeyValue if konto is not the from email address
  my $provider = "mail.xxx.de:587";      # smtp.domain.tld:port see provider documentation
# Log 1, "sendEmail RCP: $rcpt";
# Log 1, "sendEmail Subject: $subject";
# Log 1, "sendEmail Text: $text";
# Log 1, "sendEmail Anhang: $attach";
  if (not defined($attach)) { $attach = '' }
  $ret .= 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);
  $ret =~ s,[\r\n]*,,g;                         # remove CR from return-string
# Log 1, "sendemail returned: $ret $konto $passwrd";
  fhem("set ESP06 tone 21 2300 2500");
  return 0;
}



vieleicht hilft es etwas besser
gruss

PS: eMail-konto sollte auch html unterstützen......
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: RalfRog am 28 Juli 2024, 00:53:35
Aus meiner Sicht scheinen beispielhaft hier im Abschnitt Klammern und Semikolon am Ende der Kommandozeile nicht korrekt zu sein. Schau es insgesamt nochmal durch.

Zitat von: Knallfrosch am 27 Juli 2024, 12:43:51......
my $datum_2 = sprintf("%s %2d. %s% 04d",    öffnende Klammer wo ist die schließende?
  $Wochentage[$Wochentag],
  $Monatstag,
  $Monatsnamen[$Monat-1],
  $Jahr,   Abschluss mit ;

my $Text = '<!DOCTYPE html>' .
    '<html>' .
      '<head> <title>Zählerwerte</title> </head>' .
      '<body >' .
        '<h1 style="background-color:blue;color:white;font-family:verdana;text-align:center;">Zählerwerte</h1>' .
        '<p ><b>Die Ersparnis heute ist $Ersparnis  $</b></p>' .
        '<p > </p>' .
        '<p >Dies ist eine Testmail</p>' .
        '<p >FHEM</p>' .
      '</body>' .
    '</html>'   Abschluss mit ;

);    sprintf endet hier nicht



Gruß Ralf
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: Knallfrosch am 29 Juli 2024, 08:08:01
Hallo,

vielen Dank für die Hilfe.
Ich habe die genannten Fehler korrigiert.

Die Mail wird verschickt, allerdings kommt sie leer an.


Im Log finde ich dazu:

exmail('Meine@meine.de', 'Solarertrag+Stromverbrauch', "$test")}
<!DOCTYPE html><html><head> <title>Zählerwerte</title> </head><body ><h1 style=background-color:blue
sh: 1: color:white: not found
sh: 1: font-family:verdana: not found
sh: 1: text-align:center: not found
sh: 1: >Zählerwerte</h1><p ><b>Die Ersparnis heute ist   $</b></p><p > </p><p >Dies ist eine Testmail</p><p >FHEM</p></body></html>: not found
mail: Nachrichtenrumpf ist leer, hoffentlich ist das OK
2024.07.29 07:56:00 3: Solarertrag_Notify_Mail return value: -1

Ok, wenn ich nun die Zeile mit der Schriftart und Formatierung entferne, wird die Mail ebenso verschickt und ich sehe in der Mail folgendes:

<!DOCTYPE html><html><head> <title>Z=C3=A4hlerwerte</title> </head><body >=
<p ><b>Die Ersparnis heute ist   $</b></p><p > </p><p >Dies ist eine Testm=
ail</p><p >FHEM</p></body></html>

Der html-Code wird also nur als "normaler" Text versendet.

Liegt das bei mir an exmail?
Eisman verwendet ja offensichtlich erfolgreich debianmail.



Grüße
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: eisman am 29 Juli 2024, 11:46:01
hi,

sender und empfänger müssen HTML- mails können,
ich hatte damals nur das eine mail Prog gefunden,

FHEM WIKI email  (https://wiki.fhem.de/wiki/E-Mail_senden)

du must mal schauen ob dein eMail Prog  "Content-Type: text/html" unterstützt.
habe da nichts zu exmail gefunden...

gruss
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: Knallfrosch am 29 Juli 2024, 13:17:54
Empfänger kann sicherlich html.

Ich werde in den nächsten Tagen mal versuchen ein anderes Mailprogramm zu installieren und in Gang zu bringen.

Ich habe auch schon versucht etwas über exmail herauszufinden, aber nichts gefunden.
Das ganze läuft schon 7 oder 8 Jahre, ich weiß auch nicht mehr wie ich das alles installiert und in Betrieb genommen habe.

Bevor ich aber nun am RPi neue Software installiere muss ich mir erstmal ein frisches Backup ziehen. :-)

Ich melde mich wieder, wenn ich weitergekommen bin.

Grüße
Titel: Aw: Perl Anweisung für Fettschrift und Farbe in exmail
Beitrag von: Knallfrosch am 29 Juli 2024, 14:16:43
Nach dem finden und löschen eines Copy&Paste-Fehler funktioniert es einwandfrei mit Sendmail/DebianMail.

Vielen Dank für die Hilfe.


Grüße