[gelöst]Email senden vom Cubietruck

Begonnen von Tommy82, 21 Dezember 2014, 20:51:16

Vorheriges Thema - Nächstes Thema

Tommy82

Hallo,
nachdem ich den Umzug von meiner FB7390 auf den Cubie mit Debian erledigt hab, wollte ich dann jetzt auch nochmal das Email senden aus Fhem einrichten.
Ich bin dann nach dieser Anleitung hier
Zitathttp://www.fhemwiki.de/wiki/E-Mail_senden#Raspberry_Pi
vorgegangen, und habe es so in meine 99_my_Utils eingefügt:
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
tls=auto
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "xyz@googlemail.com";
my $konto = "xyz@googlemail.com";
my $passwrd = "xyz-";
my $provider = "smtp.gmail.com.de:465";
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=no -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}


Beim Speichern der 99_my_Utils bekomme ich dann diese Meldung:
Can't modify constant item in scalar assignment at ./FHEM/99_myUtils.pm line 11, near "auto my " syntax error at ./FHEM/99_myUtils.pm line 11, near "auto my " Global symbol "$rcpt" requires explicit package name at ./FHEM/99_myUtils.pm line 11. Global symbol "@googlemail" requires explicit package name at ./FHEM/99_myUtils.pm line 15. Global symbol "@googlemail" requires explicit package name at ./FHEM/99_myUtils.pm line 16. Global symbol "$rcpt" requires explicit package name at ./FHEM/99_myUtils.pm line 19. Global symbol "$rcpt" requires explicit package name at ./FHEM/99_myUtils.pm line 23.

Was hab ich falsch gemacht?

Danke
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

der-Lolo

ich glaube hinter tls=auto gehört ein ;

Tommy82

Danke für den Tip, das war zumindest ein Fehler, jetzt bekomme ich aber immer noch diese Meldungen:
Can't modify constant item in scalar assignment at ./FHEM/99_myUtils.pm line 10, near "auto;" syntax error at ./FHEM/99_myUtils.pm line 11, near "Halberstadt@googlemail" Global symbol "@googlemail" requires explicit package name at ./FHEM/99_myUtils.pm line 11. Global symbol "@googlemail" requires explicit package name at ./FHEM/99_myUtils.pm line 15. Global symbol "@googlemail" requires explicit package name at ./FHEM/99_myUtils.pm line 16.
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

der-Lolo

@ muss mit / maskiert werden...
warum nimmst du die vorlage nicht ernst?

Tommy82

Ich nehm die Vorlage ernst, muss ein \ sein :-) Aber hast recht hätte mir auch direkt auffallen können.

So einer ist noch übrig geblieben.

Can't modify constant item in scalar assignment at ./FHEM/99_myUtils.pm line 10, near "auto;"
Wenn ich tls = auto; ganz rausnehme, dann bekomme ich keine Fehlermeldung, muss also damit zusammen hängen
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

der-Lolo

dort steht auch viertletzte zeile - nicht vierte zeile...

rapster


Tommy82

#7
Da hast du natürlich absolut recht, es musste in die 4 letzte Zeile

Ok, jetzt gabs noch das Problem mit TLS, was sich aber dank der guten Bescheibung im WIKi auch lösen lies.

Nun kommen die Mails wieder an, danke für deine Hilfe


Edit
Ich muss mich leider korregieren, wenn ich die MAils über Putty absetze, dann kommen sie an, wenn ich sie aus Fhem heraus absetze, bekomme ich keine.
Was könnte jetzt in fhem an meiner konfig noch falsch sein?

Sieht jetzt so in der 99_my_Utils aus:
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "xyz\@googlemail.com";
my $konto = "xyz\@googlemail.com";
my $passwrd = "xyz";
my $provider = "smtp.gmail.com.de:465";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";

$ret .= qx(tls = auto sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Tommy82

#8
Ich bekomms aus Fhem heraus nicht gebacken, bekomme im Log diese Meldung
2014.12.24 14:43:02.763 1: sendEmail Subject: Test
2014.12.24 14:43:02.764 1: sendEmail Text: Test-Text
sh: 1: tls: not found
2014.12.24 14:43:02.790 1: sendEmail returned:


Die 99_myUtils sieht so aus:
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = "xyz\@googlemail.com";
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "xyz\@googlemail.com";
my $konto = "xyz\@googlemail.com";
my $passwrd = "xyz";
my $provider = "smtp.gmail.com:465";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";

$ret .= qx(tls = auto sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=yes -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}


Irgendwas stimmt also mit dem tls noch nicht. Ich setzte in der Fhem Konsole diesen Befehl ab:
Zitat{ DebianMail('xyz@googlemail.com','Test','Test-Text');; }
Was kann das noch sein?

Wenn ich in Putty 
ZitatsendEmail -f 'xyz@googlemail.com' -t 'xyz@googlemail.com' -u 'subject' -m 'body' -s 'smtp.gmail.com' -xu 'xyz@googlemail.com' -xp 'xyz-' -o tls=yes
eingebe wird die Email korrekt gesendet, nur aus Fhem heraus nicht.

Was verursacht in Fhem das tls problem? Hab Fhem auch mal über die Konsole gestartet und dann die Mail abgesetzt, weil ich hier in einem anderen Beitrag gelesen habe das einer ein rechte Problem hatte bei sendMail und dann auf der KOnsole den Hinweis bekomme hatte, aber ich bekomme kein rechte problem angezeigt. Was kann es noch sein?


Danke und Frohe Weihnachten alle zusammen
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

Deudi

Wenn es auf der Konsole so geht, dann setz den Befehl mit qx doch auch genauso ab!

qx(sendEmail ....
Gigabyte Brix, Ubuntu 16.04.3 LTS, Homematic, Z-Wave, EnOcean, Shelly@MQTT, SIGNALduino, JeeLink DAVIS-Sketch

Tommy82

#10
Zitat von: Deudi am 25 Dezember 2014, 09:34:59
Wenn es auf der Konsole so geht, dann setz den Befehl mit qx doch auch genauso ab!

qx(sendEmail ....
Aber im wiki steht ja:
ZitatUm die TLS Verschlüsselung (ehem. SSL) zu nutzen, muss in der 4. letzten Zeile tls=auto verwendet werden. Sollte anschließend keine Mail verschickt werden, siehe Probleme.
Hab das jetzt mal rausgenommen, dann komme ich einen anderen Fehler:
Zitat2014.12.25 09:57:06.454 1: sendEmail returned: Dec 25 09:57:06 localhost sendEmail[18401]: ERROR => Timeout while reading from smtp.gmail.com:465 There was no response after 60 seconds.

Die 99_my_Utils sieht jetzt so aus:
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "xyz\@googlemail.com";
my $konto = "xyz\@googlemail.com";
my $passwrd = "xyz";
my $provider = "smtp.gmail.com:465";
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=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}

Also passt was anderes noch nicht, habs auch mit tls=yes versucht, aber geht trotzdem nicht, langsam gehen mir die ideen aus, habs über Putty nochmal mit
sendEmail -f 'xyz@googlemail.com' -t 'xyz@googlemail.com' -u 'subject' -m 'body' -s 'smtp.gmail.com' -xu 'xyz@googlemail.com' -xp 'xyz' -o tls=yes versucht, und da klappt es problemlos


EDIT:
Jetzt klappts endlich. Der Fehler war das der Port nicht angegeben werden darf
Zitatmy $provider = "smtp.gmail.com:465";
muss
Zitatmy $provider = "smtp.gmail.com";
heissen, dann klappt es auch.

Danke für die Hilfe
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI