FHEM Forum

FHEM - Hardware => Einplatinencomputer => Thema gestartet von: Tommy82 am 21 Dezember 2014, 20:51:16

Titel: [gelöst]Email senden vom Cubietruck
Beitrag von: Tommy82 am 21 Dezember 2014, 20:51:16
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
Titel: Antw:Email senden vom Cubietruck
Beitrag von: der-Lolo am 21 Dezember 2014, 21:03:52
ich glaube hinter tls=auto gehört ein ;
Titel: Antw:Email senden vom Cubietruck
Beitrag von: Tommy82 am 21 Dezember 2014, 21:09:22
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.
Titel: Antw:Email senden vom Cubietruck
Beitrag von: der-Lolo am 21 Dezember 2014, 21:14:15
@ muss mit / maskiert werden...
warum nimmst du die vorlage nicht ernst?
Titel: Antw:Email senden vom Cubietruck
Beitrag von: Tommy82 am 21 Dezember 2014, 21:26:02
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
Titel: Antw:Email senden vom Cubietruck
Beitrag von: der-Lolo am 21 Dezember 2014, 21:29:12
dort steht auch viertletzte zeile - nicht vierte zeile...
Titel: Antw:Email senden vom Cubietruck
Beitrag von: rapster am 21 Dezember 2014, 22:33:52
 tls=auto

my $tls='auto';
Titel: Antw:Email senden vom Cubietruck
Beitrag von: Tommy82 am 21 Dezember 2014, 22:34:02
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";
}
Titel: Antw:Email senden vom Cubietruck
Beitrag von: Tommy82 am 24 Dezember 2014, 14:56:42
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
Titel: Antw:Email senden vom Cubietruck
Beitrag 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 ....
Titel: Antw:Email senden vom Cubietruck
Beitrag von: Tommy82 am 25 Dezember 2014, 10:01:17
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