Hallo FHEM Fans,
ich nutze seit kurzem die Nonblockung Version von DebianMail.
Funktioniert soweit auch richtig gut, allerdings bekomme ich nach jedem Aufruf eine HASH(0x...) Meldung.
Mails werden einwandfrei verschickt.
###############################################################################################
# $Id: 99_myUtils.pm 99999 2017-03-28 15:43:17Z $
###############################################################################################
package main;
use strict;
use warnings;
use POSIX;
use Blocking;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
##############################################################################################
# DebianMail - NONBLOCKING
# {setKeyValue("myEmailKonto",'user@domain');;setKeyValue("myEmailPasswrd",'password')}
##############################################################################################
sub DebianMail {
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $hash->{NAME_MAIL} = "Debianmail";
my $name = $hash->{NAME_MAIL};
#$hash->{helper}{RUNNING_PID} = BlockingCall("DebianMailnbl_send", $name."|".$rcpt."|".$subject."|".$text);
$hash->{helper}{RUNNING_PID} = BlockingCall("DebianMailnbl_send", $name."|".$rcpt."|".$subject."|".$text."|","", "", "", "");
}
#Mailfunktion nonblocking
sub DebianMailnbl_send {
my ($string) = @_;
my ($name, $rcpt, $subject, $text) = split("\\|", $string);
my $ret = "";
my $sender = "FHEM\@zuhause.de";
my $konto = getKeyValue("myEmailKonto");
my $passwrd = getKeyValue("myEmailPasswrd");;
my $provider = "smtp.1und1.de:587";
Log 1, "SendEmail: $rcpt - $subject";
$ret .= qx(sendemail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
if ( $ret =~ /ERROR/ )
{Log 1, "sendEmail returned: $ret";}
}
1;
Nicht das das super wichtig wäre, würde mich aber dennoch interressieren woher das HASH(0x...) nach jedem Aufruf kommt.
Aufgerufen wird es so: {DebianMail('name@Online.de', 'FHEM Test', 'test')}
Ausgegebn wird dann ein: HASH(0x5419d90)
VG Klaus
Na ja, das ist das implizite return-Verhalten von Perl-Subroutinen-Aufrufen. Es wird einfach das Ergebnis der letzten Zeile zurückgegeben, und das ist hier halt anscheinend eine hash-Referenz.
Eine zusätzliche Zeile mit einem simplen "return;" würde abhelfen.
PS: "use POSIX;" sollte raus!
You saved my day....
Ein return; brachte Abhilfe. Posix habe ich ausgebaut.
DANKE !!
VG Klaus
:) Immer wieder gerne.
[gelöst] ;) ?