Hallo, habe heute DebianMail mal wieder ausgegraben um einen Anhang zu versenden. Dabei ist mir aufgefallen da die Funktion weder mit Anhang noch meine 3 Jahre alten Mailfunktionen funktionieren.
An der sub ist nichts geändert, funktionierte 3 Jahre problemlos:
Ich hatte dummerweise die Klammern vergessen wieder raus zu nehmen: sub DebianMail()
sub DebianMail()
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "adresse\@provider.com";
my $konto = "konto";
my $passwrd = "pw";
my $provider = "smtp.googlemail.com:587";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=yes -o message-charset=utf-8);
#$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -o tls=yes -xu '$konto' -xp '$passwrd');
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
Hier ein notify (aus der DEF) welches sonst immer funktionierte:
AVR_present:absent set MyTTS tts Die Steuerung für die Heizung ist ausgefallen, Netzwerk nicht OK; {DebianMail('xxxxxxxxxxxxxx','Netzwerk Heizung','Das Netzwerk zur Heizungssteuerung ist ausgefallen')}
Fehler im LOG:
2017.05.24 20:49:31 1: ERROR evaluating my $EVTPART0='absent';my $TYPE='PRESENCE';my $SELF='HZ_Steuerung_Ausfall';my $EVENT='absent';my $DEV='MyTTS';my $NAME='AVR_present';{DebianMail('xxxxxxxxxxxxxx','Netzwerk Heizung','Das Netzwerk zur Heizungssteuerung ist ausgefallen')}: Too many arguments for main::DebianMail at (eval 5238823) line 1, near "'Das Netzwerk zur Heizungssteuerung ist ausgefallen')"
2017.05.24 20:49:31 3: HZ_Steuerung_Ausfall return value: Too many arguments for main::DebianMail at (eval 5238823) line 1, near "'Das Netzwerk zur Heizungssteuerung ist ausgefallen')"
Hat jemand einen Tipp, wurde etwas geändert?
VG
Frank
Hast Du schon probiert den Code des notify komplett in Perl zu schreiben?
Das Mischen von Perl- und FHEM-Code kann zu unerwarteten Schwierigkeiten führen.
Gruß
Dan
Mmh, ging ja drei Jahre ohne Probleme, könnte das Ganze zum testen mal in Perl packen aber die Fehlermeldung macht mich stutzig ... too many arguments...
Nimm mal die Klammern hinter sub weg!
alt:
sub DebianMail()
neu:
sub DebianMail
Dürfte ein Prototype Problem sein.
Gruß
Dan
Grrr, ja, die hatte ich vorhin übersehen als ich mit den Anhängen gespielt hatte, vorher hatte ich da keine Klammern gesetzt.
Zitat von: franky08 am 24 Mai 2017, 21:26:14
Grrr, ja, die hatte ich vorhin übersehen als ich mit den Anhängen gespielt hatte, vorher hatte ich da keine Klammern gesetzt.
Sind die Klammern da, werden auch Prototypes erwartet, welche aber bei Dir leer sind.
Könntest auch "sub DebianMail($$$)" machen, sollte auch gehen.
Gruß
Dan
Es waren die Klammern, da sollte später mal ein Parameter übergeben werden und dann hab ich nicht mehr an die Klammern gedacht :o
VG
Frank
Cool, dann setze bitte auf [gelöst] bevor die "Forums-Polizei" wieder schimpft. :)
Gruß
Dan
Ich denke das gelöst soll nicht mehr gesetzt werden, laut Diskussion im Bereich "Forum".
https://forum.fhem.de/index.php/topic,72131.0.html
;)
VG
Frank
Zitat von: franky08 am 24 Mai 2017, 22:09:28
Ich denke das gelöst soll nicht mehr gesetzt werden, laut Diskussion im Bereich "Forum".
https://forum.fhem.de/index.php/topic,72131.0.html
;)
VG
Frank
Ein Konsens wurde da m.E. noch nicht gefunden.
Und da ich die Aufforderungen gestern auch wieder mehrfach gelesen habe, gehe ich davon aus dass das [gelöst] Setzen noch nicht abgeschafft wurde. Ich sehe ehrlich gesagt auch keinen echten Mehrwert darin.
Gruß
Dan