FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Rampler am 30 Juni 2021, 07:12:38

Titel: [gelöst] DebianMail Nonblockung HASH(0x...)
Beitrag von: Rampler am 30 Juni 2021, 07:12:38
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
Titel: Antw:DebianMail Nonblockung HASH(0x...)
Beitrag von: Beta-User am 30 Juni 2021, 07:45:48
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!
Titel: Antw:DebianMail Nonblockung HASH(0x...)
Beitrag von: Rampler am 30 Juni 2021, 08:35:21
You saved my day....
Ein return; brachte Abhilfe. Posix habe ich ausgebaut.
DANKE !!

VG Klaus
Titel: Antw:DebianMail Nonblockung HASH(0x...)
Beitrag von: Beta-User am 30 Juni 2021, 09:07:03
 :) Immer wieder gerne.
[gelöst]  ;) ?