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
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...
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
Diese Warnungen (kein Fehler) werden nur einmal ausgegeben. Das ist einfach so ;)
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 = "";
@ 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";
Du musst die Variable VOR der ersten Verwendung (Zuweisung per shift) initialisieren.
Bei Zuweisung dann das 'my' weglassen...