FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: michaelapp am 03 Juli 2016, 11:00:42

Titel: Email Versand
Beitrag von: michaelapp am 03 Juli 2016, 11:00:42
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
Titel: Antw:Email Versand
Beitrag von: igami am 03 Juli 2016, 11:13:32
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.
Titel: Antw:Email Versand
Beitrag von: Benni am 03 Juli 2016, 11:15:11
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


Titel: Antw:Email Versand
Beitrag von: Otto123 am 03 Juli 2016, 19:40:32
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
Titel: Antw:Email Versand
Beitrag 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:

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);}}
Titel: Antw:Email Versand
Beitrag von: Otto123 am 03 Juli 2016, 21:11:39
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.
Titel: Antw:Email Versand
Beitrag von: Benni am 03 Juli 2016, 21:30:26
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 :-[
Titel: Antw:Email Versand
Beitrag von: michaelapp am 03 Juli 2016, 23:00:02
Danke Euch für die Hilfe !!!

Es funktioniert  :D
Titel: Antw:Email Versand
Beitrag von: Otto123 am 03 Juli 2016, 23:13:22
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>"
Titel: Antw:Email Versand
Beitrag von: igami am 04 Juli 2016, 05:56:31
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?
Titel: Antw:Email Versand
Beitrag von: michaelapp am 06 Juli 2016, 22:34:21
Hallo,

ich habe es als CC umgesetzt.

Gruß
Michael