Hallo zusammen,
ich verschicke eine Email wenn der Battery Status meiner Rauchmelder LOW ist.
Dies funktionert auch hervorragend.
Das verschicken mache ich über Debian:
######## DebianMail Mail auf dem RPi versenden ############
sub
DebianMail
{
my $rcpt = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
my $ret = "";
my $sender = "mail\@xcd.de";
my $konto = "geheim";
my $passwrd = "geheim";
my $provider = "smtp.1blu.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";
}
und über folgenden Notify:
{DebianMail('mail@apperger.de',$NAME.' Battery LOW',$EVENT);}}
Ich möchte jetzt eine jemand weiteres via CC informieren.
Wie kann ich das anstellen?
Gruß
Michael
Versendet wird die email mit dem Programm "sendEmail" einfach die Hilfe dazu anschauen
sendemail --help
sendemail-1.56 by Brandon Zehm <caspian@dotconf.net>
Synopsis: sendemail -f ADDRESS [options]
Required:
-f ADDRESS from (sender) email address
* At least one recipient required via -t, -cc, or -bcc
* Message body required via -m, STDIN, or -o message-file=FILE
Common:
-t ADDRESS [ADDR ...] to email address(es)
-u SUBJECT message subject
-m MESSAGE message body
-s SERVER[:PORT] smtp mail relay, default is localhost:25
-S [SENDMAIL_PATH] use local sendmail utility (default: /usr/bin/sendmail) instead of network MTA
Optional:
-a FILE [FILE ...] file attachment(s)
-cc ADDRESS [ADDR ...] cc email address(es)
-bcc ADDRESS [ADDR ...] bcc email address(es)
-xu USERNAME username for SMTP authentication
-xp PASSWORD password for SMTP authentication
Paranormal:
-b BINDADDR[:PORT] local host bind address
-l LOGFILE log to the specified file
-v verbosity, use multiple times for greater effect
-q be quiet (i.e. no STDOUT output)
-o NAME=VALUE advanced options, for details try: --help misc
-o message-content-type=<auto|text|html>
-o message-file=FILE -o message-format=raw
-o message-header=HEADER -o message-charset=CHARSET
-o reply-to=ADDRESS -o timeout=SECONDS
-o username=USERNAME -o password=PASSWORD
-o tls=<auto|yes|no> -o fqdn=FQDN
Help:
--help the helpful overview you're reading now
--help addressing explain addressing and related options
--help message explain message body input and related options
--help networking explain -s, -b, etc
--help output explain logging and other output options
--help misc explain -o options, TLS, SMTP auth, and more
Nun muss die sub "DebianMail" nur noch entsprechend angepasst werden. Umsetzten würde ich dies über ein optionales Argument welches dann einfach "-cc 'ccmail@apperger.de'" enthält. Bei Bedarf dann auch "-bcc ..." oder was man sonst noch so braucht.
Der sendEmail-Parameter dazu heißt -cc
Wenn du deine Sub oben so anpasst:
my $rcpt = shift;
my $cc = shift;
my $subject = shift;
my $text = shift;
my $attach = shift;
und weiter unten den Aufruf von sendEmail so:
$ret .= qx(sendEmail -f '$sender' -t '$rcpt' -cc '$cc' -u '$subject' -m '$text' -a '$attach' -s '$provider' -xu '$konto' -xp '$passwrd' -o tls=no -o message-charset=utf-8);
dann müsste folgender Aufruf von DebianMail funktionieren:
{DebianMail('mail@apperger.de','ccaddress@anywhere.com',$NAME.' Battery LOW',$EVENT);}}
Achtung: Mit der Anpassung hat sich der Aufruf, bzw. die Parameter-Reihenfolge von DebianMail geändert:
DebianMail TO-Address, CC-Address, Subject, Body, Attachment
Oder wenn es nicht cc sein muss sondern einfach ein weiterer Empfänger (https://forum.fhem.de/index.php?topic=22398.0):
{DebianMail('mail1@apperger.de,mail2@apperger.de',$NAME.' Battery LOW',$EVENT);}}
Gruß Otto
Wenn ich die Doku von
sendemail aber richtig verstehe, sollten die Empfänger-Adressen in diesem Fall aber eigentlich durch ein Leerzeichen getrennt sein und nicht durch ein Komma:
Zitat
-t ADDRESS [ADDR ...] to email address(es)
Es müsste also so sein:
{DebianMail('mail1@apperger.de mail2@apperger.de',$NAME.' Battery LOW',$EVENT);}}
Zitat von: Benni am 03 Juli 2016, 20:59:50
Wenn ich die Doku von sendemail aber richtig verstehe, sollten die Empfänger-Adressen in diesem Fall aber eigentlich durch ein Leerzeichen getrennt sein und nicht durch ein Komma:
Naja, Du kannst Recht haben, aber ich habe es mit Komma im Einsatz und es funktioniert ;)
Und den Jungs im verlinkten Thread ging es ja auch so. Ich probiere mal mit Leerzeichen aus:
Ergebnis:
In beiden Fällen bekomme ich 71 als "Status" zurück.
Mit Leerzeichen kommt kein Fehler, aber nur der Erste Empfänger bekommt die Mail (oder mein Mailprogramm veralbert mich)
Mit Komma, geht es ordentlich an beide Empfänger.
Zitat von: Otto123 am 03 Juli 2016, 21:11:39
... und es funktioniert ;)
Das ist schließlich die Hauptsache!
Danke übrigens für's ausprobieren, dazu war ich vorhin zugegebenermaßen zu faul :-[
Danke Euch für die Hilfe !!!
Es funktioniert :D
Ich lege der Vollständigkeit halber noch einen nach 8)
sendEmail --help addressing
liefert am Ende
ZitatMultiple Recipients
The -t, -cc, and -bcc options each accept multiple addresses. They may be
specified by separating them by either a white space, comma, or semi-colon
separated list. You may also specify the -t, -cc, and -bcc options multiple
times, each occurance will append the new recipients to the respective list.
Examples:
(I used "-t" in these examples, but it can be "-cc" or "-bcc" as well)
* Space separated list:
-t jane.doe@yahoo.com "John Doe <john.doe@gmail.com>"
* Semi-colon separated list:
-t "jane.doe@yahoo.com; John Doe <john.doe@gmail.com>"
* Comma separated list:
-t "jane.doe@yahoo.com, John Doe <john.doe@gmail.com>"
* Multiple -t, -cc, or -bcc options:
-t "jane.doe@yahoo.com" -t "John Doe <john.doe@gmail.com>"
Zitat von: michaelapp am 03 Juli 2016, 23:00:02
Danke Euch für die Hilfe !!!
Es funktioniert :D
Wie hast du es denn nun gelöst? Als weiterer Empfänger oder CC?
Hallo,
ich habe es als CC umgesetzt.
Gruß
Michael