Ergänzung zum Thema E-Mail auf dem Raspbery Pi senden

Begonnen von Schnup, 13 November 2013, 19:16:29

Vorheriges Thema - Nächstes Thema

ErzGabriel

#60
Okay, danke. Das wird aber dauern, bis ich da durch bin, da ich nicht der schnellst bin bei sowas es zu begreifen.

in der 99_Utils.pm steht es wie folgt:
######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "absender\@account.de";
my $konto = "kontoname\@account.de";
my $passwrd = "passwrd";
my $provider = "smtp.provider.de:25";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
Log 1, "sendEmail Anhang: $attach";;

$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -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";
}

Wernieman

#61
Ist doch einfach ;o)

#!/usr/bin/perl

sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "absender\@account.de";
my $konto = "kontoname\@account.de";
my $passwrd = "passwrd";
my $provider = "smtp.provider.de:25";

print "sendEmail RCP: $rcpt\n";
print "sendEmail Subject: $subject\n";
print "sendEmail Text: $text\n";
print "sendEmail Anhang: $attach\n";;

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

  print "sendEmail returned: $ret\n";
}

DebianMail('*******@gmail.com','TEST','TEST')


Mußte nur die "LOG" editieren, da diese eine Spezialität von FHEM sind ...

Edit:
Nochmals Angepasst (für die Konsole, NICHT für fhem!)

Edit2:
Habe es bei mir getestet, funzt so
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ErzGabriel

Script abgetippt und ausführbar gemacht.
Script gestartet und es kommt ne bash Meldung:
Syntaxfehler beim unerwarteten Wort `'*******@gmail.com','TEST','TEST''

Wenn ich jetzt nich ganz daneben liege, fehlt dem Rpi was von Perl.

Wernieman

??? Kannst Du mir bitte die GENAUE Aufrufzeile von DebianMail geben?
Am besten "copy&paste"

Bei mir funzt es ...

P.S. gesehen, das ich es editiert habe?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ErzGabriel

Jupp, hatte gesehen, das Du es überarbeitet hast und habe es mit der Version getestet.

Habe die Aufrufzeile von Dir genommen, die unter dem Script steht, habe nur debianmail komplett kleingeschrieben.
Und natürlich die Emailadresse richtig eingesetzt.

Wernieman

d.h. auch die Anzahl von ' sind gleich?

was sagt bei Dir der Aufruf von
/usr/bin/perl -v

BTW:
sendemail -v
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ErzGabriel

Ja, gleiche Anzahl, deswegen extra copy&paste

pi@Mainframe ~ $ /usr/bin/perl -v

This is perl 5, version 14, subversion 2 (v5.14.2) built for arm-linux-gnueabihf-thread-multi-64int
(with 89 registered patches, see perl -V for more detail)

Copyright 1987-2011, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

pi@Mainframe ~ $ sendEmail -v
Nov 25 13:44:10 mainframe sendEmail[25757]: ERROR => You must specify a 'from' field!  Try --help.
pi@Mainframe ~ $

Wernieman

Habe bei mir zwar perl 5.20, das sollte es aber nicht sein.

Es müsste also irgendwo im Aufruf der Fehler sein, deshalb mal:
#!/usr/bin/perl

sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "absender\@account.de";
my $konto = "kontoname\@account.de";
my $passwrd = "passwrd";
my $provider = "smtp.provider.de:25";

print "sendEmail RCP: $rcpt\n";
print "sendEmail Subject: $subject\n";
print "sendEmail Text: $text\n";
print "sendEmail Anhang: $attach\n";
print "sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8";
$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g;    # remove CR from return-string

  print "sendEmail returned: $ret\n";
}

print "Vor Aufruf\n";
DebianMail('*******@gmail.com','TEST','TEST');
print "Nach Aufruf\n";


Habe jetzt nur 3 print und ein ";" dazugefügt .... bitte um Ausgabe. (Passwort und Konto gerne ausixen)

Mal eine andere Frage, hast Du im Passwort ein besonderes Zeichen?

- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ErzGabriel

Passwort besteht nur aus Buchstaben und Zahlen.

Komme jetzt nicht ganz klar.
Habe die neue Version vom Script in meiner Datei gespeichert. Rufe ich dann debianmail auf, kommt der gleiche bash Fehler wie vor der Änderung.
Oder habe ich da jetzt was falsch verstanden und nicht richtig umgesetzt.

ErzGabriel

Alles klar. Hatte ein DebainMail in Deiner Vorgabe vergessen auf klein zu ändern.

pi@Mainframe ~ $ ./debianmail.pl
Vor Aufruf
sendEmail RCP: *******@gmail.com
sendEmail Subject: TEST
sendEmail Text: TEST
sendEmail Anhang:
sendEmail -f '*******@gmail.com' -t '*******@gmail.com' -u 'TEST' -m 'TEST' -a '' -s
'smtp.gmail.com:25' -xu '*******@gmail.com' -xp 'PASSWORT' -o tls=no -o message-charset=utf-8sh: 2: smtp.gmail.com:25: not found
sendEmail returned: Nov 25 14:27:50 mainframe sendEmail[27037]: WARNING - The argument after -s was not the server!Nov 25 14:27:50 mainframe sendEmail[27037]: ERROR => Connection attempt to localhost:25 failed: IO::Socket::INET6: connect: Verbindungsaufbau abgelehnt
Nach Aufruf
pi@Mainframe ~ $


Ausgabe beim Aufrufen des Scripts.

Wernieman

Irgendwie stimmt Dein Script nicht:
sendEmail -f '*******@gmail.com' -t '*******@gmail.com' -u 'TEST' -m 'TEST' -a '' -s
'smtp.gmail.com:25' -xu '*******@gmail.com' -xp 'PASSWORT' -o tls=no -o message-charset=utf-8sh: 2: smtp.gmail.com:25: not found
sendEmail returned: Nov 25 14:27:50 mainframe sendEmail[27037]: WARNING - The argument after -s was not the server!Nov 25 14:27:50 mainframe sendEmail[27037]: ERROR => Connection attempt to localhost:25 failed: IO::Socket::INET6: connect: Verbindungsaufbau abgelehnt


Nach -s soll und muß noch etwas kommen. Deshalb der folgende Fehler!

Kannst Du bitte mal Dein Komplettes Script rübergeben?
(EMail/Passwort nicht vergessen zu "schwärzen)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ErzGabriel

Ich habe beide Scripts, das im Fhemwiki und das Perl Script von Dir, jeweils per copy&paste auf den RPi übertragen und dann nur die Daten für Emailadresse und Passwort angepasst.
Somit hats Du ja beide Scripte schon und ich wüsste nicht wie da ein Fehler rein gekommen sein kann.

Wernieman

Naja .. wenn ich das Script aufrufe, bekomme ich:
root@mimi:~# ./DebianMail.perl
Vor Aufruf
sendEmail RCP: werner@maxel.home
sendEmail Subject: TEST
sendEmail Text: TEST
sendEmail Anhang:
sendEmail -f 'fhem@xxx.home' -t 'werner@xxx.home' -u 'TEST' -m 'TEST' -a '' -s 'mimi.xxx.home:25' -xu 'fhem@xxx.home' -xp 'passwrd' -o tls=no -o message-charset=utf-8sendEmail returned: Nov 25 15:32:20 xxx sendEmail[14740]: NOTICE => Authentication not supported by the remote SMTP server!Nov 25 15:32:20 xxx sendEmail[14740]: Email was sent successfully!
Nach Aufruf

(Bitte nicht wundern, habe intern keine Authentifizierung, Namen ausgeixxxt)

Das passt nicht zu Deiner Ausgabe
...
sendEmail -f '*******@gmail.com' -t '*******@gmail.com' -u 'TEST' -m 'TEST' -a '' -s
...


Deshalb meine Anfrage.

Auf jedenfall können wir bis jetzt zusammenfassen:
- Es liegt nicht an FHEM
- es liegt nicht an sendemail
Sondern irgendwo im Perl-Code von DebianMail ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ErzGabriel

Ich habe das Script aus dem Post 67 von Dir eins zu eins kopiert.
Wenn es wirklich an Perl liegt, dann kommt mir doch die Vermutung, das ein Perl Modul fehlt. Bin zwar der Meinung ich hätte alle Module installiert aber wenn Du mir mal ne Liste der Module zukommen lassen könntest, kann ich das überprüfen.

Wernieman

Guuute Frage .. wie kommt man an die Liste der "Perl-Module"?

Bin eher der meinung, das ein copy&paste-Fehler vorliegt.

Ist denn nach dem "-s" bei Dir noch etwas??
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html