E-Mail senden: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Wikifiziert + kleinere Korrekturen + zusätzlichen Kategorien zugeordnet)
Zeile 1: Zeile 1:
= Linux =
Um aus FHEM heraus '''E-Mail senden''' zu können, sind abhängig von der verwendeten Platform unterschiedliche Vorgehensweisen erforderlich.
== FB 7170 (non-chroot) ==
 
== Linux ==
=== FritzBox 7170 (non-chroot) ===
Datei 99_email.pm im Modul-Verzeichnis mit folgender Funktion anlegen (oder in bestehende 99_irgendwas.pm kopieren):
Datei 99_email.pm im Modul-Verzeichnis mit folgender Funktion anlegen (oder in bestehende 99_irgendwas.pm kopieren):


Zeile 9: Zeile 11:
  system("/bin/echo \"$text\" | /usr/bin/mail send -i - -s \"$subject\" -t \"$rcpt\"");
  system("/bin/echo \"$text\" | /usr/bin/mail send -i - -s \"$subject\" -t \"$rcpt\"");
}</nowiki>
}</nowiki>
Aufruf dann mittels <code>{ fb_mail('empfaenger@@mail.de','Subject','text 123') }</code>
Aufruf dann mittels  
:<code>{ fb_mail('empfaenger@@mail.de','Subject','text 123') }</code>


== FB 7390 ([[AVM Fritz!Box]]) ==
=== Fritz!Box 7390 ===
'''Seit 10/2012 ist diese Funktion Bestandteil der fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$) '''(Groß-Kleinschreibung beachten)
Auf der [[AVM Fritz!Box|FritzBox 7390]] ist diese Funktion seit 10/2012 Bestandteil der Fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$) (Groß-Kleinschreibung beachten).
Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von fhem geladen. fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (zB in 99_myUtils.pm) die Zeile ''use FritzBoxUtils;''einfügen.
 
Mit dem install von AVM.de wird fhem in einer chroot-Umgebung ausgeführt, die den Zugriff auf die Mailfunktion der Fritzbox nicht zulässt. Daher muss fhem in der [http://fhem.de/fhem.html#Download Version von fhem.de] installiert sein. Sollte Ihre Fritzbox bisher mit dem install von AVM laufen, kann (nach einem backup!) das image von fhem.de einfach drüberinstalliert werden, es sollten dabei alle Einstellungen erhalten bleiben.
Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von Fhem geladen. Fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (z.&nbsp;B. in 99_myUtils.pm) die Zeile ''use FritzBoxUtils;'' einfügen.
 
Mit dem Install von AVM.de wird fhem in einer chroot-Umgebung ausgeführt, die den Zugriff auf die Mailfunktion der Fritzbox nicht zulässt. Daher muss Fhem in der [http://fhem.de/fhem.html#Download Version von fhem.de] installiert sein. Sollte Ihre Fritzbox bisher mit dem install von AVM laufen, kann (nach einem backup!) das image von fhem.de einfach drüberinstalliert werden. Es sollten dabei alle Einstellungen erhalten bleiben.


  <nowiki>sub fb_mail {
  <nowiki>sub fb_mail {
Zeile 24: Zeile 29:
  system(&quot;rm /var/tmp/fhem_nachricht.txt&quot;);
  system(&quot;rm /var/tmp/fhem_nachricht.txt&quot;);
}</nowiki>
}</nowiki>
Aufruf dann mittels <code>{ fb_mail('empfaenger@mail.de','Subject','text 123') }</code>
bzw. <code>{ FB_mail('empfaenger@mail.de','Subject','text 123') }</code>
'''Hinweis:'''Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des mailempfängers gedoppelt werden, da ein einfaches @ sonst durch den getriggerten device-namen ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.


Aufruf dann mittels
:<code>{ fb_mail('empfaenger@mail.de','Subject','text 123') }</code>
bzw.
:<code>{ FB_mail('empfaenger@mail.de','Subject','text 123') }</code>
'''Hinweis:''' Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des Mailempfängers verdoppelt werden, da ein einfaches @ sonst durch den Namen des getriggerten Devices  ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.


Dem Mailer können noch weitere Parameter hinzugefügt werden. Mehr dazu siehe: [http://www.wehavemorefun.de/fritzbox/Mailer Mailer]
Dem Mailer können noch weitere Parameter hinzugefügt werden. Mehr dazu siehe: [http://www.wehavemorefun.de/fritzbox/Mailer Mailer]


== Synology DiskStation ==
=== Synology DiskStation ===
Beim DSM 3.2 gab es keinen <code>sendmail</code>-Befehl, sondern nur eine Funktion für den Versand der System-Benachrichtigungen.
Beim DSM 3.2 gab es keinen <code>sendmail</code>-Befehl, sondern nur eine Funktion für den Versand der System-Benachrichtigungen. Interessanterweise funktionierte aber der <code>php-mail</code>-Befehl, so dass man mittels folgendem Modul Mails frei versenden kann:
Interessanterweise funktionierte aber der <code>php-mail</code>-Befehl, so dass man mittels folgendem Modul Mails frei versenden kann:


  <nowiki>sub sendmail($$$) {
  <nowiki>sub sendmail($$$) {
Zeile 40: Zeile 47:
  undef;
  undef;
}</nowiki>
}</nowiki>
== Raspberry Pi ==
 
In der weezy-Version, wie sie von busware zur Verfügung gestellt wird, muss noch sendEmail nachinstalliert werden:
=== Raspberry Pi ===
In der weezy-Version, wie sie von busware zur Verfügung gestellt wird, muss auf einem [[Raspberry Pi]] noch sendEmail nachinstalliert werden:


<pre>
<pre>
Zeile 48: Zeile 56:
</pre>
</pre>


in der [[99_myUtils_anlegen|99_myUtils]] folgende sub einfügen:
in der [[99_myUtils_anlegen|99_myUtils]] folgende Unterroutine einfügen:


  <nowiki>######## DebianMail  Mail auf dem RPi versenden ############  
  <nowiki>######## DebianMail  Mail auf dem RPi versenden ############  
Zeile 70: Zeile 78:
  Log 1, &quot;sendEmail returned: $ret&quot;;  
  Log 1, &quot;sendEmail returned: $ret&quot;;  
}</nowiki>
}</nowiki>
Beim Aufruf der Funktion gibt es zwei unterschiedliche Verhaltensweisen zu beachten. Wird DebianMail durch ein Fhem-Ereignis als Makro mit "Transferzeichen", wie @ oder&#160;% aufgerufen, so sind diese innerhalb des Aufrufs von DebianMail zu maskieren.
Beim Aufruf der Funktion gibt es zwei unterschiedliche Verhaltensweisen zu beachten. Wird DebianMail durch ein Fhem-Ereignis als Makro mit "Transferzeichen", wie @ oder&#160;% aufgerufen, so sind diese innerhalb des Aufrufs von DebianMail zu maskieren.


Siehe auch commandref:
Siehe auch commandref:
◾The character @ will be replaced with the device name. To use @ in the text itself, use the double mode (@@).
* The character @ will be replaced with the device name. To use @ in the text itself, use the double mode (@@).
◾The macro&#160;%&lt;parameter&gt; will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.
* The macro&#160;%&lt;parameter&gt; will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.


Beispiel:
Beispiel:
Zeile 81: Zeile 90:
  DebianMail('email@@email.domain','Subject','Text');;\
  DebianMail('email@@email.domain','Subject','Text');;\
}</nowiki>
}</nowiki>
in allen anderen Fällen muss die Maskierung entfallen:
in allen anderen Fällen muss die Maskierung entfallen:


Zeile 89: Zeile 99:
}</nowiki>
}</nowiki>


== BeagleBoard-xM ==
=== BeagleBoard-xM ===
Auf einem [[:Kategorie:BeagleBoard-xM|BeagleBoard-xM]] mit einem [http://en.opensuse.org/HCL:BeagleBoard-xM OpenSUSE 12.2] kann man ebenfalls das Perl-Programm ''sendEmail''wie beim RPi nutzen. Dies gibt es aber nicht in den Repositorys von openSUSE, sondern man muss sich ''sendEmail''als Source herunterladen. Das geht am einfachsten per ''wget'', welches man ebenfalls erst installieren muss (aber aus einem Repository)
Auf einem [[:Kategorie:BeagleBoard-xM|BeagleBoard-xM]] mit einem [http://en.opensuse.org/HCL:BeagleBoard-xM OpenSUSE 12.2] kann man ebenfalls das Perl-Programm ''sendEmail'' wie beim RPi nutzen. Dies gibt es aber nicht in den Repositories von openSUSE, sondern man muss sich ''sendEmail'' als Source herunterladen. Das geht am einfachsten per ''wget'', welches man ebenfalls erst installieren muss (aber aus einem Repository).


  <nowiki>$ zypper in wget
  <nowiki>$ zypper in wget
$ cd /opt
$ cd /opt
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
$ tar xvfz sendEmail-v1.56.tar.gz
$ tar xvfz sendEmail-v1.56.tar.gz
$ cd sendEmail-v1.56
$ cd sendEmail-v1.56
$ cp sendMail /usr/local/bin</nowiki>
$ cp sendMail /usr/local/bin</nowiki>
Dann geht man weiter vor wie unter RPi beschrieben (anlegen der SUB-Routine in 99_myUtils usw.).
Dann geht man weiter vor wie unter RPi beschrieben (anlegen der SUB-Routine in 99_myUtils usw.).


'''Hinweis:'''Die Version 1.56 von ''sendEmail''ist Stand Januar 2013 die aktuelle. Da diese Programmversion von 2009 stammt, ist mit neuen Versionen selten zu rechnen. Vlt. schauen Sie trotzdem vorher auf der [http://caspian.dotconf.net/menu/Software/SendEmail/ Homepage von sendEmail] nach.
'''Hinweis:''' Die Version 1.56 von ''sendEmail'' ist Stand Januar 2013 die aktuelle. Da diese Programmversion von 2009 stammt, ist mit neuen Versionen selten zu rechnen. Vielleicht schauen Sie trotzdem vorher auf der [http://caspian.dotconf.net/menu/Software/SendEmail/ Homepage von sendEmail] nach.


= Windows =
== Windows ==
1. Kopiere die Datei sendEmail.exe* in Dein FHEM Verzeichnis.
# Kopiere die Datei sendEmail.exe* in Dein FHEM Verzeichnis (hier c:\fhem-5.0\); Quelle: [http://caspian.dotconf.net/menu/Software/SendEmail/ http://caspian.dotconf.net/menu/Software/SendEmail/]
(Hier c:\fhem-5.0\)
# Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile): <br><code>sendEmail -f absender@domain.de -u "%1" -m " " -s SMTP-SERVERAdresse -xu SMTP_USERNAME -xp SMTP_PASSWORT -t empfänger@domain.de -o message-header="X-Message-Flag: FHEM"</code>
# Beispiel fhem.cfg
## Mail wenn sich der Status von Heizung.* oder Hzg.* ändert <br><code>define Mail_Heizung notify Heizung.*|Hzg.* { system("wmail @:%")}</code>
## Mail bei Signal Aussentemperatur (für dieses Beispiel wird [http://fhem.de/commandref.html#getstate http://fhem.de/commandref.html#getstate getstate] benötigt) <br><code>define Mail_Aussentemperatur notify Aussentemperatur {\</code><br><code>my ($val);;\</code><br><code>$val = fhem "getstate @";;\</code><br><code>system("wmail \"@: $val\"");;\</code><br><code>}</code>


Quelle: [http://caspian.dotconf.net/menu/Software/SendEmail/ http://caspian.dotconf.net/menu/Software/SendEmail/]
== Probleme ==
 
=== sendEmail ===
2. Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem
Falls man keine E-Mails verschicken kann, kann man in einem ersten Test prüfen, ob sendEmail als solches funktioniert und die Konfiguration (Benutzer, Passwort, Server-Name usw.) des Mail-Kontos, über das die Mails abgesetzt werden sollen, richtig ist.
Inhalt (eine Zeile):
 
<nowiki>sendEmail -f absender@domain.de -u "%1" -m " " -s SMTP-SERVERAdresse -xu SMTP_USERNAME -xp SMTP_PASSWORT -t empfänger@domain.de -o message-header="X-Message-Flag: FHEM"</nowiki>
 
3. Beispiele fhem.cfg
 
3.a Mail wenn sich der Status von Heizung.* oder Hzg.* ändert
 
<nowiki>define Mail_Heizung notify Heizung.*|Hzg.* { system("wmail @:%")}</nowiki>
 
3.b Mail bei Signal Aussentemperatur (Für diese Beispiel wird getstate
benötigt [http://fhem.de/commandref.html#getstate http://fhem.de/commandref.html#getstate])
 
<nowiki>define Mail_Aussentemperatur notify Aussentemperatur {\
my ($val);;\
$val = fhem "getstate @";;\
system("wmail \"@: $val\"");;\
}</nowiki>
= Probleme =
== sendEmail ==
Falls man keine E-Mails verschicken kann, kann man als ersten Test prüfen, ob sendEmail als solches funktioniert und die Konfiguration (Benutzer, Passwort, Server-Name usw.) des Mail-Kontos, über das die Mails abgesetzt werden sollen, richtig ist.


Hierzu setzt man in der FHEM-Befehlszeile die folgende Anweisung ab:
Hierzu setzt man in der FHEM-Befehlszeile die folgende Anweisung ab:
:<code>{ SUB-Routinen-Name('EMailAdresse@Mail.Domain','Test','Test-Text');; }</code>
und ersetzt ''SUB-Routinen-Name'' durch den Namen der in 99_myUtils erzeugten Prozedur. Statt ''EMailAdresse@Mail.Domain'' trägt man noch eine gültige E-Mail-Adresse ein und bestätigt den Befehl dann mittels &lt;Enter&gt; (nicht "save"). Empfangen Sie nicht kurzfristig eine entsprechende E-Mail, ist sehr wahrscheinlich an den Zugangsdaten etwas verkehrt.


<nowiki>{ SUB-Routinen-Name('EMailAdresse@Mail.Domain','Test','Test-Text');; }</nowiki>
Vor dem testen der Routine oben kann sendEmail auch über die Konsole (z.&nbsp;B. via Putty) getestet werden:
und ersetzt ''SUB-Routinen-Name''mit dem Namen der in 99_myUtils erzeugten Prozedur. Statt ''EMailAdresse@Mail.Domain'' trägt man noch eine gültige E-Mail-Adresse ein und bestätigt den Befehl dann mittels &lt;Enter&gt; (nicht "save"). Empfangen Sie nicht kurzfristig eine entsprechende E-Mail, ist sehr wahrscheinlich an den Zugangsdaten etwas verkehrt.
:<code>sendEmail -f 'fhemsystem@meinedomain.tld' -t 'ich@meinedomain.tld' -u 'subject' -m 'body' -s 'meinmailserver.meinedomain.de' -xu 'fhemmailer' -xp 'geheimespassword' -o tls=no</code>
 
Vor dem testen der Routine oben kann sendEmail auch über die Console (z.b. via Putty) getestet werden:
 
<pre>
sendEmail -f 'fhemsystem@meinedomain.tld' -t 'ich@meinedomain.tld' -u 'subject' -m 'body' -s 'meinmailserver.meinedomain.de' -xu 'fhemmailer' -xp 'geheimespassword' -o tls=no
</pre>


== Email laut log gesendet aber nicht ist angekommen? ==
== Email laut Log gesendet aber nicht angekommen? ==
Dann bitte in der Fritzbox Oberfläche überpüfen, ob unter "System" -> "Push Service" selbiger eingerichtet und aktiviert wurde.  
Dann bitte in der Fritzbox Oberfläche überpüfen, ob unter "System" -> "Push Service" selbiger eingerichtet und aktiviert wurde.  


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]
[[Kategorie:FritzBox]]
[[Kategorie:BeagleBoard-xM]]
[[Kategorie:Raspberry Pi]]

Version vom 25. September 2013, 11:51 Uhr

Um aus FHEM heraus E-Mail senden zu können, sind abhängig von der verwendeten Platform unterschiedliche Vorgehensweisen erforderlich.

Linux

FritzBox 7170 (non-chroot)

Datei 99_email.pm im Modul-Verzeichnis mit folgender Funktion anlegen (oder in bestehende 99_irgendwas.pm kopieren):

sub fb_mail {
 my $rcpt = $_[0];
 my $subject = $_[1];
 my $text = $_[2];
 system("/bin/echo \"$text\" | /usr/bin/mail send -i - -s \"$subject\" -t \"$rcpt\"");
}

Aufruf dann mittels

{ fb_mail('empfaenger@@mail.de','Subject','text 123') }

Fritz!Box 7390

Auf der FritzBox 7390 ist diese Funktion seit 10/2012 Bestandteil der Fhem Standardauslieferung. Sie ist untergebracht in FritzBoxUtils.pm und heisst dort FB_mail($$$) (Groß-Kleinschreibung beachten).

Da der Dateiname von FritzBoxUtils.pm nicht mit 99_ beginnt, wird diese Programmdatei nicht automatisch beim Start von Fhem geladen. Fhem muss zum Laden dieser Programmdatei aufgefordert werden. Dazu (z. B. in 99_myUtils.pm) die Zeile use FritzBoxUtils; einfügen.

Mit dem Install von AVM.de wird fhem in einer chroot-Umgebung ausgeführt, die den Zugriff auf die Mailfunktion der Fritzbox nicht zulässt. Daher muss Fhem in der Version von fhem.de installiert sein. Sollte Ihre Fritzbox bisher mit dem install von AVM laufen, kann (nach einem backup!) das image von fhem.de einfach drüberinstalliert werden. Es sollten dabei alle Einstellungen erhalten bleiben.

sub fb_mail {
 my $rcpt = $_[0];
 my $subject = $_[1];
 my $text = $_[2];
 system("/bin/echo \"$text\" > /var/tmp/fhem_nachricht.txt");
 system("/sbin/mailer send -i '/var/tmp/fhem_nachricht.txt' -s \"$subject\" -t \"$rcpt\"");
 system("rm /var/tmp/fhem_nachricht.txt");
}

Aufruf dann mittels

{ fb_mail('empfaenger@mail.de','Subject','text 123') }

bzw.

{ FB_mail('empfaenger@mail.de','Subject','text 123') }

Hinweis: Wenn der Aufruf der Mailfunktion aus einem notify oder at erfolgt, muss das @@ in der Adresse des Mailempfängers verdoppelt werden, da ein einfaches @ sonst durch den Namen des getriggerten Devices ersetzt würde. Bei Verwendung in der fhem-Kommandozeile oder einem eigenen *Utils.pm ist diese Doppelung nicht erforderlich. Bitte bei den ersten Mails ins Log schauen, ob die Mailadresse wie gewünscht verwendet wird.

Dem Mailer können noch weitere Parameter hinzugefügt werden. Mehr dazu siehe: Mailer

Synology DiskStation

Beim DSM 3.2 gab es keinen sendmail-Befehl, sondern nur eine Funktion für den Versand der System-Benachrichtigungen. Interessanterweise funktionierte aber der php-mail-Befehl, so dass man mittels folgendem Modul Mails frei versenden kann:

sub sendmail($$$) {
 my($empf, $subj, $nachricht) = @_;
 system("php -r 'mail(\"$empf\",\"$subj\",\"$nachricht\");'");
 undef;
}

Raspberry Pi

In der weezy-Version, wie sie von busware zur Verfügung gestellt wird, muss auf einem Raspberry Pi noch sendEmail nachinstalliert werden:

sudo apt-get update
sudo apt-get install sendEmail

in der 99_myUtils folgende Unterroutine einfügen:

######## DebianMail  Mail auf dem RPi versenden ############ 
sub 
DebianMail 
{ 
 my $rcpt = shift;
 my $subject = shift; 
 my $text = shift; 
 my $ret = "";
 my $sender = "absender\@account.de"; 
 my $konto = "kontoname\@account.de";
 my $passwrd = "passwrd";
 my $provider = "smtp.provider.de";
 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"; 
}

Beim Aufruf der Funktion gibt es zwei unterschiedliche Verhaltensweisen zu beachten. Wird DebianMail durch ein Fhem-Ereignis als Makro mit "Transferzeichen", wie @ oder % aufgerufen, so sind diese innerhalb des Aufrufs von DebianMail zu maskieren.

Siehe auch commandref:

  • The character @ will be replaced with the device name. To use @ in the text itself, use the double mode (@@).
  • The macro %<parameter> will expand to the current value of the named parameter. This can be either a parameter from the device definition or a parameter from the set or get command.

Beispiel:

define Sonstiges notify Fenster:Window:.*,.*Low.Batt*. {\
 DebianMail('email@@email.domain','Subject','Text');;\
}

in allen anderen Fällen muss die Maskierung entfallen:

Beispiel:

define Sonstiges at *01:00:00 {\
 DebianMail('email@email.domain','Subject','Text');;\
}

BeagleBoard-xM

Auf einem BeagleBoard-xM mit einem OpenSUSE 12.2 kann man ebenfalls das Perl-Programm sendEmail wie beim RPi nutzen. Dies gibt es aber nicht in den Repositories von openSUSE, sondern man muss sich sendEmail als Source herunterladen. Das geht am einfachsten per wget, welches man ebenfalls erst installieren muss (aber aus einem Repository).

$ zypper in wget
$ cd /opt
$ wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
$ tar xvfz sendEmail-v1.56.tar.gz
$ cd sendEmail-v1.56
$ cp sendMail /usr/local/bin

Dann geht man weiter vor wie unter RPi beschrieben (anlegen der SUB-Routine in 99_myUtils usw.).

Hinweis: Die Version 1.56 von sendEmail ist Stand Januar 2013 die aktuelle. Da diese Programmversion von 2009 stammt, ist mit neuen Versionen selten zu rechnen. Vielleicht schauen Sie trotzdem vorher auf der Homepage von sendEmail nach.

Windows

  1. Kopiere die Datei sendEmail.exe* in Dein FHEM Verzeichnis (hier c:\fhem-5.0\); Quelle: http://caspian.dotconf.net/menu/Software/SendEmail/
  2. Erstelle im FHEM Verzeichnis die Datei wmail.bat mit folgendem Inhalt (eine Zeile):
    sendEmail -f absender@domain.de -u "%1" -m " " -s SMTP-SERVERAdresse -xu SMTP_USERNAME -xp SMTP_PASSWORT -t empfänger@domain.de -o message-header="X-Message-Flag: FHEM"
  3. Beispiel fhem.cfg
    1. Mail wenn sich der Status von Heizung.* oder Hzg.* ändert
      define Mail_Heizung notify Heizung.*|Hzg.* { system("wmail @:%")}
    2. Mail bei Signal Aussentemperatur (für dieses Beispiel wird http://fhem.de/commandref.html#getstate getstate benötigt)
      define Mail_Aussentemperatur notify Aussentemperatur {\
      my ($val);;\
      $val = fhem "getstate @";;\
      system("wmail \"@: $val\"");;\
      }

Probleme

sendEmail

Falls man keine E-Mails verschicken kann, kann man in einem ersten Test prüfen, ob sendEmail als solches funktioniert und die Konfiguration (Benutzer, Passwort, Server-Name usw.) des Mail-Kontos, über das die Mails abgesetzt werden sollen, richtig ist.

Hierzu setzt man in der FHEM-Befehlszeile die folgende Anweisung ab:

{ SUB-Routinen-Name('EMailAdresse@Mail.Domain','Test','Test-Text');; }

und ersetzt SUB-Routinen-Name durch den Namen der in 99_myUtils erzeugten Prozedur. Statt EMailAdresse@Mail.Domain trägt man noch eine gültige E-Mail-Adresse ein und bestätigt den Befehl dann mittels <Enter> (nicht "save"). Empfangen Sie nicht kurzfristig eine entsprechende E-Mail, ist sehr wahrscheinlich an den Zugangsdaten etwas verkehrt.

Vor dem testen der Routine oben kann sendEmail auch über die Konsole (z. B. via Putty) getestet werden:

sendEmail -f 'fhemsystem@meinedomain.tld' -t 'ich@meinedomain.tld' -u 'subject' -m 'body' -s 'meinmailserver.meinedomain.de' -xu 'fhemmailer' -xp 'geheimespassword' -o tls=no

Email laut Log gesendet aber nicht angekommen?

Dann bitte in der Fritzbox Oberfläche überpüfen, ob unter "System" -> "Push Service" selbiger eingerichtet und aktiviert wurde.