Als Einsteiger in die Welt von Fhem und dem Raspbery Pi fehlten mir im WIKI-Beitrag "E-Mail senden" noch ein paar Erklärungen.
Inzwischen läuft die Funktion bei mir und ich möchte meine Erkenntnisse auch anderen Neueinsteigern zur Verfügung stellen.
Es wäre schön wenn ein erfahrener Nutzer einen prüfenden Blick darauf wirft.
Ergänzende Beschreibung zum Einrichten einer Mail-Funktion auf einem Raspberry Pi
Voraussetzung
Bei der Debian Version 7.x (Codename Wheezy) ist das Skript "sendEmail" nicht standardmäßig installiert.
1. Über das Konsolentool "which" lässt sich herausfinden, ob das Skript bereits installiert ist
sudo which sendEmail
Ist das Skript vorhanden, wird "/usr/bin/sendEmail" zurückgegeben und die beiden nächsten Punkte können übersprungen werden.
2. Vor einer Installation eines Pakets empfiehlt es sich zuerst die lokale Paketdatenbank zu aktualisieren:
sudo apt-get update
Es kann schon einen Moment dauern bis alle Pakete geprüft und ggf. aktualisiert sind!
3. Das Skript "sendEmail" über die Paketverwaltung "apt-get" installieren:
sudo apt-get install sendEmail
Hier müssen ggf. noch Optionen bestätigt werden, danach steht das Skript zur Verfügung.
Verwendung
Zum Versenden einer E-Mail erfordert das Debian-Skript die Übergabe aller notwendigen Zugangsdaten.
Dabei können die Angaben zu Absender, Server/Provider, User, Passwort und Optionen in der Regel als konstant angesehen werden und müssen deshalb auch nur einmal definiert werden.
Veränderbare Parameter sind üblicherweise nur Empfänger-Adresse, Betreffzeile und der Inhalt der Nachricht.
Um unter Fhem nicht immer alle acht Parameter übergeben zu müssen, wird eine zusätzliche Funktion in der Datei "99_myUtils" angelegt. Als Vorlage dient, die im FHEMWikki beschriebene Unterroutine "DebianMail".
siehe auch http://www.fhemwiki.de/wiki/E-Mail_senden (http://www.fhemwiki.de/wiki/E-Mail_senden)
In der Funktion "DebianMail" werden die konstanten Zugangsdaten in Variablen ("my") gespeichert und zusammen mit den veränderbaren Parametern an das Debian-Skript übergeben.
HINWEIS: Dadurch wird "99_myUtils.pm" zu einer individuellen Datei, nur für die hier eingetragene Mail-Umgebung!
Zuordnung Parameter und "my" Variablen:
Die Funktion wird aus FHEM mit drei Parametern (Ziel-Adresse, Betreff, Text der Nachricht) aufgerufen.
Über "shift" werden die Werte in die ersten drei Variablen übernommen.
Debian-Sript Parameter | my Variable | Beschreibung
-t ADDRESS [ADDR ...] | $rcpt | E-Mail Adresse des Empfängers
-u SUBJECT | $subject | Text der Betreffzeile
-m MESSAGE | $text | Text der Nachricht
An vierter Stelle steht die Variable "$ret", die intern für die Rückgabemeldung benötigt wird.
In den folgenden Variablen werden die individuellen Zugangsdaten eingetragen.
WICHTIG: vor dem "@" Zeichen wird immer ein zusätzlicher Backslash "\" eingetragen!
-f ADDRESS | $sender | Alias-Adresse des Absenders mit "\@" anstatt "@"
-xu USERNAME | $konto | Konto-Adresse bzw. SMTP Username mit "\@" anstatt "@"
-xp PASSWORD | $passwrd | Passwort (Verschlüsselung?)
-s SERVER[:PORT] | $provider | E-Mail-Anbieter bzw. SMTP Serveradresse:Port
Der achte Parameter "-o tls=no" wird direkt übergeben und schaltet Transport Layer Security bzw. (SSL für SMTP) aus.
Besonderheit beim Aufruf der Funktion
Einige Fhem Funktionen z.B. "notyfy" und "ECMD" verwenden im Moment noch das "@" als Transferzeichen für die Rückgabe des Gerätenamens. Aus diesem Grund muss bei diesen Funktionen das "@" Zeichen in der Ziel-Adresse oder evt. auch im Text durch ein Doppelzeichen "@@" ersetzt bzw. maskiert werden.
Bei den anderen Fhem-Funktionen ist eine solche Maskierung nicht erforderlich.
Ein Beispiel, wo DebianMail() zusammen mit "notify" eingesetzt wird:
define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) { \
{ DebianMail('Ziel@@Adresse.de', 'FHEM-Meldung', 'BatterieWechsel erforderlich bei @ -> Status: %')};; \
} \
}
Die Funktion "n_batt_chk" prüft alle Geräte mit Hilfe von "notify" auf den Zustand von "Battery" bzw. "battery" und ersetzt dabei die Zeichen wie folgt:
"@@" -> durch "@"
"@" -> durch den Gerätenamen(device name) z.B.: "HT_BuTur"
"%" -> durch den gefundenen Zustand (received event) z.B.: "battery:low"
Sobald ein Zustand nicht "ok" ist, erfolgt eine E-Mail mit folgenden Angaben:
an : Ziel@Adresse.de
Betreff : FHEM-Meldung
Inhalt : BatterieWechsel erforderlich bei HT_BuTur -> Status: battery:low
Wenn's mit Fhem nicht klappt
Sollte es beim Aufruf der Funktion in Fhem ein Problem geben, empfiehlt es sich zuerst eine E-Mail direkt von der Raspberry Konsole zu senden. Im folgenden Beispiel werden dazu die Zugangsdaten durch die eigenen Angaben ersetzt und als "EINE" Zeile an der Konsole eingegeben:
sendEmail -f 'Ziel@Adresse.de' -t 'absender@account.de' -u 'Betreffzeile' -m 'Test-Nachricht'
-s 'E-Mail-Anbieter' -xu 'kontoname@account.de' -xp 'passwort' -o tls=no
Noch viel Spaß mit Fhem auf dem Beerchen!
Schnup
Hallo Schnupp,
vielen Dank fuer Deine Muehe. Ich bin blutiger Anfänger und stolpere immer noch :-)
Anbei der Code in der 99_myUtils.pm:
######### DebianMail Mail auf dem RPi versenden ############
sub DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $ret = "";
my $sender = "name\@eclipso.de";
my $konto = "name\@eclipso.de";
my $passwrd = "pass!word666";
my $provider = "mail.eclipso.de:25";
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);
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
fhem.cfg:
define Mail_Alarm notify Alarm{ {DebianMail('name@@web.de','Alarm2','AlarmGetriggert')};;}
attr Mail_Alarm icon message_mail
attr Mail_Alarm room Unsorted
rufe ich in dem FHEM Fenster:
{DebianMail('name@web.de','Alarm2','AlarmGetriggert')}
auf, so bekomme ich eine Email
schreibe ich:
trigger Mail_Alarm
bekomme ich keine :-(
Ich sehe folgendes im Log:
2013.11.24 16:00:17 5: Cmd: >trigger Mail_Alarm<
2013.11.24 16:00:17 5: Triggering Mail_Alarm (1 changes)
2013.11.24 16:00:17 5: Notify loop for Mail_Alarm
2013.11.24 16:00:17 4: eventTypes: notify Mail_Alarm ->
2013.11.24 16:00:17 4: HTTP FHEMWEB:192.168.1.1:1670 GET /fhem
Hat jemand eine Idee?
Gruesse,
ThomasD
define Mail_Alarm notify Mail_Alarm {DebianMail('name@@web.de','Alarm','AlarmGetriggert')}
So tut es jetzt :)
Hallo,
ich bereite derzeit den Umzug meiner FHEM - Installation von der Fritz-Box auf den RASPI vor.
Der E-Mail-Versand, wie hier beschrieben, funktioniert.
Nun haben verschiedene Provider angekündigt, den unverschlüsselten Versand von Emails zukünftig nicht mehr zu unterstützen. Unabhängig davon habe ich auch sonst Interesse, alle Mails zu verschlüsseln.
Für T-Online habe ich versucht, diese hier gezeigte Konfiguration auf den "securesmtp" mit "TLS" zu adaptieren, was mir leider nicht gelungen ist.
Möglicherweise hat das hier schon jemand probiert und kann einen ergänzenden Hinweis zu der erforderlichen Konfiguration geben
Im Logfile erhalte ich die folgende Meldung, wenn ich "TLS = yes" setze:
2013.11.28 15:20:49 1: sendEmail returned: Nov 28 15:20:49 raspberrypi sendEmail[2178]: NOTICE => Authentication not supported by the remote SMTP server!Nov 28 15:20:49 raspberrypi sendEmail[2178]: ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first.
sonst gibt es keinen Eintrag im Logfile
Gruß
Michael
Hallo Michael,
hast Du es schon einmal mit "securesmtp.t-online.de:587" versucht, weil der securesmtp nicht auf Port 25 sondern auf 587 hört.
Gruß
Helmut
ja, Port 587 habe ich eingestellt
Könntest Du in dem "sendemail"-Kommando noch Debug-Ausgaben aktivieren mit dem Schalter "-v" bzw. "-vv".
Gruß
Helmut
Hallo Michael,
Zitat von: MiWe58 am 28 November 2013, 17:46:45
ja, Port 587 habe ich eingestellt
Ich kenne jetzt T-Online-Mail-Einstellungen nicht, aber ich habe gerade ähnliches für web.de und gmx gemacht (weil die auch spätestens Anfang 2014 komplett auf "verschlüsselt" umstellen). Die verschlüsseln aber beide nicht per TLS, sondern SSL und laufen auf Port 465 als SMTP-Postausgangsserver.
Gruß
Thomas
Hallo, ich hatte Probleme mit Googlemail und mußte noch folgendes ändern.
Problems
If you get the following error:
"invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332"
It is a known bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679911
A temporary workaround is to edit the file /usr/bin/sendemail on line 1907 by changing 'SSLv3 TLSv1'in to 'SSLv3',
Gruß
cerberus
Ja, das ist ein leidiges Thema. Ich habe diese Problem schon von Anfang an. Alle paar Wochen recherchiere ich mal dazu und gelange immer wieder nur den folgenden Hinweis:
Zitat von: cerberus am 28 November 2013, 21:46:10
Problems
If you get the following error:
"invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 332"
It is a known bug: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679911
A temporary workaround is to edit the file /usr/bin/sendemail on line 1907 by changing 'SSLv3 TLSv1'in to 'SSLv3',
Leider funktioniert das bei mir nicht (bin bei t-online). Auf meiner "normalen" Linux-Distribution (Ubuntu) funktioniert sendEmail problemlos.
Nachtrag:
Man findet auch, dass man in der Datei /usr/local/share/perl/5.14.2/IO/Socket/SSL.pm in Zeile 1490 den Inhalt von
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i nach
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i abändern soll. Aber das hilft bei mir auch nicht.
Viele Grüße
Christoph
Ich habe nachdem der unten angegebene Workarround bei mir mit T-Online nicht funktioniert hat den Wert nicht in SSLv3 sondern in TLSv1 geändert.
Danach hat es bei mir funktioniert.
A temporary workaround is to edit the file /usr/bin/sendemail on line 1907 by changing 'SSLv3 TLSv1'in to 'SSLv3',
Super! Es funktioniert.
Das war die Lösung.
1000 Dank!
Moin !
Nur so als Anregung. Aus meiner Sicht ist es sinnvoller, sich auf dem Raspi Postfix zu konfigurieren, und die Mails aus FHEM
heraus direkt mit MIME::Lite (o.ä. CPAN Modulen) zu versenden. Dies hat diverse Vorteile:
- Der Mailversand auf dem Raspi ist nicht auf FHEM beschränkt, sondern kann generisch genutzt werden
- User und Kennwort für den SMTP-Zugang beim Provider liegen nicht im Klartext rum
- Der Mailversand funktioniert asynchron, und FHEM wird nicht negativ beeinflußt, wenn der Provider mal tot ist
Gerade der letzte Punkt war für mich entscheidend. Von der Fritzbox (und /sbin/mailer) kommend hatte ich durchaus
schon das Problem, dass der Provider (bei mit 1&1) ein SMTP Problem hatte. Da die Mails von FHEM synchron direkt
zum Provider geschickt wurden, und dies im Fehlerfall zu extrem langen Timeouts beim Maiversand geführt hat, war
FHEM quasi tot. Um dieses Problem auf dem Raspi (bzw. bei mir einem BBB) zu umgehen, schickt FHEM die Mails daher
an die lokale Postfix Instanz, welche die Mails bei Bedarf (SMTP Problem beim Provider) queued. Auswirkungen auf
FHEM sind damit dann ausgeschlossen.
Anbei meine recht simple Mailroutine aus der 99_myUtils.pm:
sub pl_mail {
my ($rcpt, $subject, $text, $attachment) = @_;
my $msg = MIME::Lite->new (
From => 'FHEM <fhem@domain.xy>',
To => $rcpt,
Subject => $subject,
Type => 'multipart/mixed'
);
$MIME::Lite::AUTO_CONTENT_TYPE = 1;
if ($attachment ne "") {
$msg->attach(Path => $attachment,
Filename => basename($attachment),
Disposition => 'attachment'
);
}
if ($text ne "") {
$msg->attach(Type =>'TEXT',
Data => $text
);
}
$msg->send;
Log 3, "Mail sent to $rcpt";
}
Howtos, wie man Postfix im Zusammenspiel mit Provider XYZ konfiguriert gibt es von jedem größeren Provider.
Gruß, Marc
Ich habe eine Frage zur Variable % im Email Text.
Ich nutze die Email Funktion für Sturmwarnungen und bekomme die Daten vom Yahoo Wetter Modul.
Das funktioniert soweit ganz gut nur ich hätte gerne die Windgeschwindigkeit in der Email enthalten bekomme aber immer nur Emails mit % als Zeichen.
define sturmwarnung at +*01:00:00 { if (ReadingsVal("wetter","wind_speed",99) > 30) { DebianMail('ich@gmail.com','Sturmwarnung','Es wird stürmisch bis zu % kmh');;}}
Was mache ich falsch?
Gibt es noch eine Möglichkeit das PW, was in den myUtils hinterlegt ist zu verschlüsseln?
Zitat von: Schnup am 13 November 2013, 19:16:29
...
Ein Beispiel, wo DebianMail() zusammen mit "notify" eingesetzt wird:
define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) { \
{ DebianMail('Ziel@@Adresse.de', 'FHEM-Meldung', 'BatterieWechsel erforderlich bei @ -> Status: %')};; \
} \
}
Die Funktion "n_batt_chk" prüft alle Geräte mit Hilfe von "notify" auf den Zustand von "Battery" bzw. "battery" und ersetzt dabei die Zeichen wie folgt:
"@@" -> durch "@"
"@" -> durch den Gerätenamen(device name) z.B.: "HT_BuTur"
"%" -> durch den gefundenen Zustand (received event) z.B.: "battery:low"
Sobald ein Zustand nicht "ok" ist, erfolgt eine E-Mail mit folgenden Angaben:
an : Ziel@Adresse.de
Betreff : FHEM-Meldung
Inhalt : BatterieWechsel erforderlich bei HT_BuTur -> Status: battery:low
...
Vielen Dank für die ausführliche Beschreibung und vor allem das Beispiel mit der Batterieüberwachung! Das habe ich jetzt bei mir mal ausprobiert. Ich habe allerdings bei jeder Statusmeldung eines Heizungsthermostats eine Mail erhalten. Daher eine Kleine Ergänzung: "Schuld" daran ist die 2. battery-Meldung:
2014-05-06 21:13:57 CUL_HM HM_CC_RT_DN_Heizung battery: ok
2014-05-06 21:13:57 CUL_HM HM_CC_RT_DN_Heizung batteryLevel: 2.9
Da batteryLevel: 2.9 ein Zustand nicht "ok" ist wird eine Mail versendet obwohl das nicht gewollt / nötig ist. Ein Doppelpunkt in der battery-Abfrage hat das Problem aber für mich gelöst:
Zitatdefine n_batt_chk notify .*:[Bb]attery:.* usw.
Workaround:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679911#15 (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=679911#15)
Das funktioniert zwar, wie ich gestern getestet habe ABER wenn die SSL.pm geändert wird läuft das Calendar Modul mit dem Google kalender nicht mehr!
Siehe:
http://forum.fhem.de/index.php/topic,24496.0.html
http://forum.fhem.de/index.php/topic,24528.0.html
VG
Frank
Da wird aber nicht die SSL.pm geändert sondern /usr/bin/sendemail. Und dann klappt's auch mit allen anderen Modulen.
Ah gut zu wissen :) Dachte bis eben das es nur mit einer Änderung der ssl.pm geht, hatte deinen verlinkten Artikel gestern nur überflogen und im Hinterkopf noch die Geschichte mit der ssl.pm.
VG
Frank
...ich muss noch mal fragen ob das Passwort, was in der 99_myUtils hinterlegt ist irgendwie verschlüsselt werden kann.
Zitat von: marc2 am 27 Dezember 2013, 00:12:25
...
Nur so als Anregung. Aus meiner Sicht ist es sinnvoller, sich auf dem Raspi Postfix zu konfigurieren, und die Mails aus FHEM
heraus direkt mit MIME::Lite (o.ä. CPAN Modulen) zu versenden. Dies hat diverse Vorteile:
...
Hallo Marc,
ich bin neu hier, würde das gerne mit postfix machen, der ist auch schon eingerichtet und mailt auch aus der console...
Wie würde ich deine Funktion in einer notify definition auffrufen wenn z.b. der Device Monitor ein device auf "dead" setzet?
Gruß Alex
Hallo Alex,
ich habe die folgende Funktion in meiner 99_myutils.pm:
sub Postfixmail ($$$) {
my ($Empfaenger,$Betreff,$Text) = @_;
system ("echo \"$Text\" | mail -s \"$Betreff\" $Empfaenger");
return undef;
}
Und die Definition des Notify sieht so aus.
.*:Activity.* {if ("$EVENT" !~ "alive") {
Postfixmail('andieseEmailwirdgesendet@PROVIDER.de', 'FHEM Gerät meldet sich nicht mehr', $NAME." ist ".$EVENT);
Log 3, "$NAME: meldet sich nicht ";
}
}
Gruß
Christian
habe es mal so konfiguriert, wenn ich den notify definiere bekomme ich Folgenden Fehler:
Unknown command Log, try help.
Unknown command }, try help.
Hallo Alex,
der Inhalt des Notifys ist aus dem DEF-Fenster! Nicht im configfile so eingeben.
Ist bei mir so in Verwendung und funktioniert problemlos.
Gruß
Christian
Hallo Christian
das ging jetzt, im Event Monitor sehe ich jetzt auch DeviceMonitor notify active aber ich habe keine mail...
Kann man den Befehl postfixmail irgendwie testen?
Gruß Alex
Ich habe nun mal einen Testnotify erstellt und den ohne Bedingung an einen meiner FS20 Schalter gehängt.
Ergebnis war eine Mail bei jedem Schaltvorgang.
Ich habe die DeviceMonitor Notfication nun angepasst:
.*:health_state:.* {if ("$EVENT" !~ "alive") {
Postfixmail('andieseEmailwirdgesendet@PROVIDER.de', 'FHEM Gerät meldet sich nicht mehr', $NAME." ist ".$EVENT);
Log 3, "$NAME: meldet sich nicht ";
}
}
Das scheint nun zu funktionieren.
Hast du wirklich als Regexp .*:Activity.* ?
Hallo Alex,
ja das Notify ist genauso in Benutzung und ich habe auch darüber bereits Mails erhalten. Allerdings habe ich Homematic Komponenten. Ich habe den Event ja vorher extra im Monitor angeschaut.
Das musst du sonst vielleicht auf deine Verhältnisse anpassen.
Gruß
Christian
Hallo Christian.
nun ja sagen wir mal so bei mir steht das auf dem Event Montor:
z.b.:
2015-03-19 21:48:10 HMS HMS_SZ health_state: dead
Von daher sollte das passen denke ich.
Jetzt habe ich zumindest ein config beispiel und kann mir meine weitern notifies zusammenbasteln...
Danke dir.
Gruß Alex
Hallo Zusammen,
gibt es eigentlich auch Codes um den Text in der Mail zu formatieren?
Ich denke da an:
* Zeilenumbruch
* Fett
* Zentriert...
Vielen Dank
Martin
Zeilenumbruch kein Problem
Aber für den Rest müsstest Du HTML-Mails verschicken .. und DAS willst Du nicht.
Wenn er sich das als RSS zusammenbaut und als jpg per Mail schicken lässt?
Dann müsste er ein Mailproggi mit Anhangmöglichkeit verwenden (oder selber mime-Mail generieren)
Hallo zusammen.
Ich habe ein Problem mit dem versenden der Mail, wenn ich es über Konsole mache klappt es einwandfrei.
Will ich aber ne Mail über Fhem versenden, kommen immer zwei Fehlermeldungen.
1. smtp.gmail.com:587 nicht gefunden
2. Argument hinter -s kein Server.
Weiß da jemand Rat, weil ich komme nicht merh weiter.
Danke.
Als welcher User hast Du es auf der Konsole probiert?
Habe die Mail als ROOT, als auch per User Pi per Konsole verschickt, deswegen schließe ich ein Rechteproblem aus. Der User Pi hat seit der Einrichtung des RPi keine besonderen Rechte erhalten, habe damals nur das Passwort geändert.
Einfache Frage:
Und unter welchem User läuft fhem?
auch mit dem User probiert??
Das ist eigene Dämlichkeit von mir, unter fhem habe ich das vergessen zu testen.
Nur komme ich uaf der Linux Konsole nicht in den User fhem rein. Habe versucht, das Passwort neu zu setzen oder zu löschen, nichts klappt.
Danach habe ich dem User fhem die nötigen Rechte für das Verzeichnis gegeben in dem sendMail liegt. Wenn ich in der fhem Konsole per Zeile eine Mail verschicke kommt keine Fehlermeldung und es taucht nichts im Event Monitor oder im Log auf.
Der von mir bereits gesetzte notify meldet im Log immer unbekannter Nutzer, habe die Absendermail mehrmals gecheckt, sie stimmt und enthält keinen Schreibfehler.
Ich weiß nicht mehr weiter und habe absolut keine Idee mehr unter welchen Suchbegriffen ich bei Google was finden könnte, habe mich schon ne halbe Woche durch Google gesucht.
Gibt uns bitte:
grep fhem /etc/passwd
Warscheinlich steht am Ende so etwas wie "/bin/false", "/usr/sbin/nologin" o.Ä.
Bitte Ändern in "/bin/bash"
ansonsten, als root einloggen und probieren:
su - fhem
(Das "-" ist wichtig!)
Btw:
grep fhem /etc/group
Jupp, da lag der Fehler. Nachdem ich es nach Deinen Angaben geändert habe komme ich in der Linuxkonsole in den Benutzer fhem und kann die Email auch versenden.
Versenden über Linuxkonsole klappt einwandfrei.
Erneuter Test über Fhemkonsole. Kein Eintrag im Log oder im Eventmonitor.
Kontrolle Log auf den bereits eingerichteten notify
2015.11.25 10:51:18 4: n_batt_chk exec { if("%" !~ m/ok/) {
{ DebianMail('********@@gmail.com', 'FHEM-Meldung', 'BatterieWechsel erforderlich bei$
}
}
2015.11.25 10:51:18 5: Cmd: >{ if("%" !~ m/ok/) {
{ DebianMail('**********@@gmail.com', 'FHEM-Meldung', 'BatterieWechsel erforderlich bei$
}
}<
2015.11.25 10:51:18 1: sendEmail RCP: *********@@gmail.com
2015.11.25 10:51:18 1: sendEmail Subject: FHEM-Meldung
2015.11.25 10:51:18 1: sendEmail Text: BatterieWechsel erforderlich bei @ -> Status: %
sh: 2: ********@gmail.com: not found
2015.11.25 10:51:20 1: sendEmail returned: Nov 25 10:51:20 mainframe sendEmail[20299]: WARNING =$
2015.11.25 10:51:20 5: CUL/RAW: /TACD9AE82F7
Keine Veränderung, habe die Absenderadresse gecheckt, kein Schreibfehler in der Utils.pm
Auf der Konsole funzt es??? auch mit dem DebianMail-Script?
Mich wundert das "sh: 2: ********@gmail.com: not found"
Funzt nur auf der Linuxkonsole, in der Direkteingabe bei Fhem passiert nichts.
Ich bin schon länger ratlos, deswegen habe ich mich ja hier ans Forum gewendet.
Das sh verstehe ich auch nicht und habe auch keinen Schimmer wo das her kommt.
NHur mal so ..... hast Du probiert mit nur einem "@"?
P.S. Deine EMail ist in dem beitrag an erster Stelle zu sehen: Absicht oder Übersehen?
Das mit der Emailadresse hatte ich übersehen. Schon geändert. Danke.
Habe die Änderung gemacht, wie Du vorgeschlagen hast, keine Änderung. Alles wie vorher.
Sicherheitshalber:
Auf der Konsole funktioniert ein:
DebianMail('********@@gmail.com', 'FHEM-Meldung', 'test'
??
Code von Dir kopiert, unbekanntes Kommando. Gleiche Befehlszeile in {} gesetzt, keine Email und nichts im Log.
Ich meinte in der Konsole als "Fhem-User" ....
Ist eigentlich aus Deinem Output kopiert ...
Linuxkonsole als Fhem-User klappt es einwandfrei.
O.K. und in Fhem mit {}??
In Fhem mit {} passiert nichts und es kommt keine Mail an.
Steht auch nichts im Log oder Event Monitor.
Da gleiche Kommando?? also 1zu1 ??
Was meinst Du jetzt mit gleiche Kommando als 1 zu 1?
Kann Dir gerade nicht ganz folgen. Sorry.
Das gleiche, wie auf der Konsole, nur eben in FHEM mit {} eingeschlossen ....
Linux Konsole:
sendEmail -f ********@gmail.com -t ********@gmail.com -u TEST -m TEST -s smtp.gmail.com:587 -xu ********@gmail.com -xp Passwort -o tls=yes
Funktioniert unter Fhem User, Pi User und Root
Fhem Eingabezeile
{DebianMail('*******@gmail.com','TEST','TEST')}
Funktioniert nicht. Kein Eintrag im Logfile und nichts im Eventmonitor zu sehen.
Du sollst auf der Kommandozeile nicht sendmail sondern DebianMail nehmen ....
Wir wollen doch wissen, warum es in FHEM nicht läuft, aber auf der Konsole ... ansonsten könntest Du das "sendmail"-Kommando in FHEM verwenden ...
Wobei .... wie ist eigentlich DebianMail definiert?
Edit
Mein fehler ... DebianMail ist in FHEM selber definiert .... Kannst Du Dir für die Debug-Zwecke erst mal die Definition in ein eigenes perl-Script kopieren?
Ich gehe davon aus, das Du es aus dem Wiki-hast (http://www.fhemwiki.de/wiki/E-Mail_senden (http://www.fhemwiki.de/wiki/E-Mail_senden))
Dann den Bereich "DebianMail" in ein perl-script, und anschließend noch ein Aufruf rein. Dann das Script ausführbar machen (chmod +x) und mal auf der Konsole testen. Wenn nicht funzt: Mehr Debug-Ausgaben einfügen!
DebianMail kann doch auf der Konsole nicht funktionieren, da es in der 99_utils.pm von Fhem definiert ist. Die Utils ist ja nicht in Linux geladen, da nur für Fhem.
Also verstehe ich jetzt nicht, wie ich das in der Linuxkonsole funktionieren soll.
s.o. ;o)
Da ist mein Problem, ich habe von Perl null Ahnung.
Verstehe zwar was Du jetzt vor hast, kann es aber aus mangelnden Kenntnissen nicht umsetzen.
Also ...
packe einfach in eine Datei (z.B. DebianMail.pl:
#!/bin/perl
sub DebianMail (Wie -In-Fhem-Definiert)
......
DebianMail (wie in FhemAufruf)
Sonst schreib mal, wie DebainMail bei Dir definiert ist ...
P.S.:
http://perl-6.de/tutorials/anfaenger/ (http://perl-6.de/tutorials/anfaenger/)
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";
}
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
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.
??? 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?
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.
d.h. auch die Anzahl von ' sind gleich?
was sagt bei Dir der Aufruf von
/usr/bin/perl -v
BTW:
sendemail -v
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 ~ $
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?
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.
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.
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)
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.
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 ....
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.
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??
Dachte, Du hast vielleicht noch die Zeile zur Hand, die Du damals eingegeben hast.
So mal eben alles abrufen geht nicht so einfach und würde auch ne ellen lange Liste ergeben.
Aber Deine Aussage mit dem, ob ich noch was hinter -s stehen habe, brachte mich auf ne Idee.
Habe mir das Script noch mal genau angeschaut. Beim copy&paste hatte sich eine Zeilenumbruch eingefügt, den ich nicht weiter beachtet habe, den habe ich entfernt und nun funzt es.
Die Lösung kann manchmal so einfach sein. ;-)
Jetzt muss es nur noch in Fhem zum laufen gebracht werden.
Soooooo .... was Du in dem "sub" hast, mußt Du 1zu1 in FHEM stehen haben.....
(Abgesehen von den "print" Zeilen, dort bitte die LOG-Zeilen)
(P.S. als User "FHEM" getestet?)
DANN in der FHEM Eingabezeile eingeben:
{ DebianMail('werner@xxx.home','TEST','TEST'); }
Bzw natürlich Deine EMail-Adresse ;o)
P.S. ein eventuellen FHEM-Restart wegen config-Änderung nicht vergessen ....
Jupp, hatte ich als Fhem User getestet.
Habe jetzt das Perl Script in die 99_Utils.pm kopiert. Auch drauf geachtet, das ich keinen Zeilenumbruch drin habe.
Und siehe da, es funktioniert spitze.
Kriege alle zwei Minuten eine Email von Fhem. Mein notify stimmt vorne und hinten nicht. ;-)
Da muss ich also noch mal dran arbeiten, weil die Batterie ist nicht leer und es steht auch nicht wirklich drin, welches Bauteil einen Batteriewechsel brauch.
Ich danke Dir Wernieman für Deine Geduld und Hilfe, das Problem zu lösen.
Gern geschehen ...
mal Prinzipiell, im Rückblick:
War Vorgehen klar .. und was hätte man besser machen können?
Vorgehen war klar.
1. Fehlerbeschreibung
2. Testen über Linuxkonsole, zum ausschließen, das ein Fehler in sendemail ist und alle Rechte vergeben sind.
3. Perlscript anlegen, zum erleichterten suchen und beheben von Fehlern in der debianmail Subroutine.
4. Perl Subroutine übertragen in Fhem und erneuten Test, das beim übertragen sich keine Fehler neu eingeschlichen haben.
Besser machen, wüsste jetzt nicht, was wir da hätten besser machen können.
Danke .. war auch eher für mich gedacht, wir hatten uns zwischenzeitlich nicht gaaans verstanden ;o)
Zitat von: ErzGabriel am 25 November 2015, 16:59:27
Habe jetzt das Perl Script in die 99_Utils.pm kopiert.
Du hast dir dafür aber hoffentlich eine eigene 99_
myUtils.pm angelegt und nicht wirklich die bereits vorhandene 99_Utils.pm genommen.
Sonst währt die Freude u.U. nur bis zum nächsten Update. Siehe dazu bspw. auch folgenden Forenbeitrag: http://forum.fhem.de/index.php?topic=13854.0 (http://forum.fhem.de/index.php?topic=13854.0)
@Werniemann
Okay, leichte Verständigungsprobleme waren zwischendurch vorhanden aber hat ja alles trotzdem geklappt.
@Benni
Ja, habe es in die 99_myUtils.pm gespeichert. Das ist mir schon bekannt, trotzdem danke für den Hinweis.
Habe sogar die Datei noch mal separat bei mir gesichert, für den Fall aller Fälle.
Hallo Leute ich muss das jetzt nochmal aufgreifen. Leider hab ich durch suchen nichts gefunden aber seit dem Update auf die neue Fhem Version (5.7), wurde ja der Syntax für Variablen (früher: @ und %; jetzt: $EVENT, $NAME) geändert.
Seit dem schaffe ich es nicht mehr in die Sendemail Funktion eine Variable zu übergeben.
Alter Code:
define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) { \
{ DebianMail('Ziel@@Adresse.de', 'FHEM-Meldung', 'BatterieWechsel erforderlich bei @ -> Status: %')};; \
} \
}
wenn ich das "@" und das "%" jetzt duch $NAME und $EVENT ersetze, steht im Email statt dem Device Namen leider nur die Variable mit $NAME...
Was mache ich falsch?
Vielleicht kann mir jemand einen Tipp geben :-)
Zitat von: psycho160 am 23 Dezember 2015, 08:36:57
Alter Code:
define n_batt_chk notify .*:[Bb]attery.* { if("%" !~ m/ok/) { \
{ DebianMail('Ziel@@Adresse.de', 'FHEM-Meldung', 'BatterieWechsel erforderlich bei @ -> Status: %')};; \
} \
}
wenn ich das "@" und das "%" jetzt duch $NAME und $EVENT ersetze, steht im Email statt dem Device Namen leider nur die Variable mit $NAME...
Vielleicht kann mir jemand einen Tipp geben :-)
Die doppelten @ in der Mailadresse können nun durch eine einzelnes @ ersetzt werden.
Der Mailtext mit den Variablen $NAME und $EVENT muss in doppelte Anführunszeichen (") damit eine Ersetzung stattfindet (sollte aber eigentlich auch vorher schon so gewesen sein!):
DebianMail('Ziel@Adresse.de', 'FHEM-Meldung', "BatterieWechsel erforderlich bei $NAME -> Status: $EVENT")
Ich komme bei mir einfach nicht weiter. Wenn ich den Aufruf über das Textfenster in der fhem-Weboberfläche eingebe, bekomme ich folgende Fehlermeldung:
sendEmail returned: Dec 26 11:58:04 raspberrypi sendEmail[2594]: ERROR => smtp.1und1.de:465 returned a zero byte response to our query.
Was habe ich falsch konfiguriert?!
Zitat von: Frank am 26 Dezember 2015, 12:29:18
Wenn ich den Aufruf über das Textfenster in der fhem-Weboberfläche eingebe, bekomme ich folgende Fehlermeldung:
sendEmail returned: Dec 26 11:58:04 raspberrypi sendEmail[2594]: ERROR => smtp.1und1.de:465 returned a zero byte response to our query.
Ich dachte, das hat bei dir schon mal funktioniert? :o
Zitat von: psycho160 am 23 Dezember 2015, 08:36:57
steht im Email statt dem Device Namen leider nur die Variable mit $NAME...
@Benni:
Danke haut jetzt hin. hatte vorher ein ' statt "
Jetzt werden die Variablen richtig angezeigt!
Danke
Bei mir läuft's jetzt auch. Musste Port 587 sein (bei 1und1) und TLS musste auf YES gesetzt werden.
Oops! Jetzt hab' ich eure beiden Antworten doch glatt zusammengeworfen.
Ich habe de E-Mail-Versand inkl. SSL komplett mit Perl-Mitteln gemacht, siehe 99_sendmail.pm in der Anlage.
Es müssen vorher natürlich ein paar Perl-Module installiert werden:
apt-get install libnet-smtp-ssl-perl
cpan install Net::SSLeay
cpan install IO::Socket::SSL
cpan install Authen::SASL
cpan install Net::SMTP::SSL
Also falls jemand braucht...
hallo,
ich habe ein Problem mit sendMail, die Nachricht wird Ordnungsgemäß verschickt.
Bekomme aber eine Perl Warnung im Logfile
2016.03.01 21:06:59 1: sendEmail RCP: meineEmail@provider.com
2016.03.01 21:06:59 1: sendEmail Subject: Balkontuer Offen
2016.03.01 21:06:59 1: sendEmail Text: Balkontuer Offen, EINBRECHER im Haus ??
2016.03.01 21:06:59 1: PERL WARNING: Use of uninitialized value $attach in concatenation (.) or string at ./FHEM/99_myUtils.pm line 29.
2016.03.01 21:06:59 1: sendEmail Anhang:
2016.03.01 21:06:59 1: PERL WARNING: Use of uninitialized value $attach in concatenation (.) or string at ./FHEM/99_myUtils.pm line 31.
2016.03.01 21:07:02 1: sendEmail returned: Mar 01 21:07:02 raspberrypi3 sendEmail[4748]: Email was sent successfully!
in der 99_myUtils.pm steht folgendes, wie auch im Wiki angegeben
Fehlerzeilen ROT markiert
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
######## DebianMail Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "FHEM\@gmail.com";
my $konto = "meineEmail\@provider.com";
my $passwrd = "xxxxxxxxxx";
my $provider = "smtp.gmail.com";
Log 1, "sendEmail RCP: $rcpt";
Log 1, "sendEmail Subject: $subject";
Log 1, "sendEmail Text: $text";
[color=red] Log 1, "sendEmail Anhang: $attach";;
[/color]
[color=red] $ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=yes -o message-charset=utf-8);
[/color] $ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
Wo ist der Fehler, ist doch alles wie in der Anleitung im Wiki ausgeführt
Gruß Werner
Kannst Du mir einen Gefallen tuen, und Zeile 29 und 31 markieren?
Sorry, bin bei einem Privatsupport "zu Faul", es mir auszuzählen ...
moin, hahaha ist noch früh ;) ;) ;)
Hatte oben geschrieben Zeilen sind rot markiert nur leider hat es nicht richtig geklappt
vor den beiden Zeilen steht [ color=red ]
Gruß Werner
Moin Werner,
Du hast in der myUtils attach als Übergabe mit drin, aber im Aufruf nicht - richtig? Also Du hast vorgesehen ein Attachment zu senden aber keines angegeben. Du hast zwei Möglichkeiten:
1. Du lässt die Zeile in der myUtils weg. my $attach = shift;
2. Du hängst an Deinen Aufruf noch ein ,'<hier steht nix>' an.
{DebianMail('name@willi.com','Testmail von FHEM','Testmail','');;}
Wobei ich mir nicht sicher bin ob das ohne Anhang wirklich geht. Ich verwende das so nicht, also Variante 1.
Gruß Otto
moin Otto,
ok, ich setze vor dem Log1 attach ein "#"
ich schicke ja nur Text.
werde es gleich probieren, gehe auf dem Balkon rauchen 8) ;)
Danke
ZitatLog1 attach ein "#"
das wird es nicht bringen, dann bekommst Du den zweiten Fehler immer noch.
Gruß Otto
@Otto
genau ;D
EDIT: jetzt klappt es, also für mich erledigt
Danke
Gruß Werner
Zitat von: Schnup am 13 November 2013, 19:16:29
Wenn's mit Fhem nicht klappt
Sollte es beim Aufruf der Funktion in Fhem ein Problem geben, empfiehlt es sich zuerst eine E-Mail direkt von der Raspberry Konsole zu senden. Im folgenden Beispiel werden dazu die Zugangsdaten durch die eigenen Angaben ersetzt und als "EINE" Zeile an der Konsole eingegeben:
sendEmail -f 'Ziel@Adresse.de' -t 'absender@account.de' -u 'Betreffzeile' -m 'Test-Nachricht'
-s 'E-Mail-Anbieter' -xu 'kontoname@account.de' -xp 'passwort' -o tls=no
@Schnub: könntest Du bitte diesen Absatz editieren? Hier sind Absender und Empfänger-Email vertauscht!! -f = from = Absender; -t = to = Empfänger
Danke! :P
Hallo,
ich wollte mal nachfragen ob jemand Erfahrung mit Web.DE hat.
Ich habe versucht die EMAIL dort einzurichten:
####### DebianMail Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = " mein.name\@web.de";
my $konto = " mein.name";
my $passwrd = "mein\passwort";
my $provider = "smtp.web.de:587";
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=auto -o message-charset=utf-8);
$ret =~ s,[\r\n]*,,g; # remove CR from return-string
Log 1, "sendEmail returned: $ret";
}
Dann habe ich über die Zeile
{DebianMail('mein.name@andereadresse.de','Alarm2','AlarmGetriggert')}
versucht eine Nachrit zu senden.
In meinem Web.de Account bekoam ich eine Sicherheitswarnung.
Hat nur einmal funktioniert und ich denke dass web.de jetzt meinen Account gesperrt hat?"
Deinen Web.de Account kannst Du ja testen.
Ich kenne den aktuell Stand nicht, aber ich erinnere mich, dass ich irgendwann davon abgekommen bin Konten bei Web oder gmx oder anderen Freemail Providern für solche Mails zu nutzen. Die ändern ständig etwas, die werden soviel missbraucht, es ist kein Wunder, dass die nicht über solche Zugänge begeistert sind.
Aber bei mir geht es nach wie vor, ich weiß nicht ob ich bei web.de mal irgendwas "konfigurieren" musste.
probier mal die Kommandozeile direkt im TerminalsendEmail -f 'absender@web.de' -t 'empfänger@...' -u 'Hallo Welt' -m 'Das ist ein Test' -s 'smtp.web.de' -xu 'absender@web.de' -xp 'password' -o tls=auto
Gruß Otto
Hi,
es liegt vermutlich wirklich an Web.de.
Ich habe jetzt einen anderen Account benutzt und da klappts ohne Probleme!
Beste Grüße
Tobias