FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Thoffi1978 am 16 Mai 2016, 09:32:33

Titel: Beim erstmaligen versenden einer Email kommt eine Fehlermelung
Beitrag von: Thoffi1978 am 16 Mai 2016, 09:32:33
Hallo,

wenn nach einem Neustart von FHEM eine Email verschickt wird kommt es immer zu einer Fehlermeldung.
Ab der zweiten Email dann nicht mehr.
Wieso kommt es zur Fehlermeldung?

Hier der Code zum versenden der Email:
{ DebianMail('Adresse@Empfänger.de', 'Fhem Pi', 'laeuft')}

Hier die Fehlermeldung:
2016.05.16 09:26:22 1: PERL WARNING: Use of uninitialized value $attach in concatenation (.) or string at ./FHEM/99_myUtils.pm line 69.
2016.05.16 09:26:22 1: sendEmail Anhang:
2016.05.16 09:26:22 1: PERL WARNING: Use of uninitialized value $attach in concatenation (.) or string at ./FHEM/99_myUtils.pm line 71.
2016.05.16 09:26:24 1: sendEmail returned: May 16 09:26:24 raspberrypi sendEmail[12584]: Email was sent successfully!


Hier die line´s aus der myUtlis:
62 my $sender = "fhem\@xxxxxxx";
63 my $konto = "xxxxxxxx\@";
64 my $passwrd = "xxxxxxx";
65 my $provider = "xxxxxxx";
66 Log 1, "sendEmail RCP: $rcpt";
67 Log 1, "sendEmail Subject: $subject";
68 Log 1, "sendEmail Text: $text";
69 Log 1, "sendEmail Anhang: $attach";;
70
71 $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);
72 $ret =~ s,[\r\n]*,,g;    # remove CR from return-string
73 Log 1, "sendEmail returned: $ret";
74 }
75
76 1;


Vielen Dank
Hoffi
Titel: Antw:Beim erstmaligen versenden einer Email kommt eine Fehlermelung
Beitrag von: MadMax-FHEM am 16 Mai 2016, 11:20:23
Du hast kein attach (attachment) daher ist $attach in der Funktion uninitialized...
Das wird hier "angemosert"...

Entweder ein Attachment dazu, Variable initialisieren oder Funktion ändern (oder mit der einmal Warnung leben)...

Mail geht ja wahrsch. trotzdem raus...
Titel: Antw:Beim erstmaligen versenden einer Email kommt eine Fehlermelung
Beitrag von: Thoffi1978 am 16 Mai 2016, 18:19:09
Die Mail geht trotzdem raus.

Was mich nur wundert ist, dass es nur beim ersten Mailversand diese Fehlermeldung gibt. Ab dem Zweiten nicht mehr.

Hoffi
Titel: Beim erstmaligen versenden einer Email kommt eine Fehlermelung
Beitrag von: dev0 am 16 Mai 2016, 19:19:33
Diese Warnungen (kein Fehler) werden nur einmal ausgegeben. Das ist einfach so ;)
Titel: Antw:Beim erstmaligen versenden einer Email kommt eine Fehlermelung
Beitrag von: franky08 am 16 Mai 2016, 19:19:47
Weil nach dem ersten versenden die Variable dann initialisiert ist, da du ja einmal einen Anhang versendet hast.

P.S. Wenn dich das stört, dann initialisiere die Variable doch vor der ersten Verwendung, einfach oben in den Code

my $attach = "";
Titel: Antw:Beim erstmaligen versenden einer Email kommt eine Fehlermelung
Beitrag von: Thoffi1978 am 20 Mai 2016, 07:43:52
@ franky08:   Jetzt kommt es zu folgender Meldung nach einen Restart von Fhem:
1: PERL WARNING: "my" variable $attach masks earlier declaration in same scope at ./FHEM/99_myUtils.pm line 62.


99_myUtils:
57 my $rcpt = shift;
58 my $subject = shift;
59 my $text = shift;
60 my $attach = shift;
61 my $ret = "";
62 my $attach = "";
63 my $sender = "fhem\@xxxxx.xxx";
64 my $konto = "xxxxx\@";
65 my $passwrd = "xxxx";
66 my $provider = "xxxx.xxx.xxx";
Titel: Antw:Beim erstmaligen versenden einer Email kommt eine Fehlermelung
Beitrag von: MadMax-FHEM am 20 Mai 2016, 08:57:00
Du musst die Variable VOR der ersten Verwendung (Zuweisung per shift) initialisieren.
Bei Zuweisung dann das 'my' weglassen...