Hauptmenü

Email Versand

Begonnen von michaelapp, 03 Juli 2016, 11:00:42

Vorheriges Thema - Nächstes Thema

michaelapp

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

igami

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.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Benni

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



Otto123

Oder wenn es nicht cc sein muss sondern einfach ein weiterer Empfänger:
{DebianMail('mail1@apperger.de,mail2@apperger.de',$NAME.' Battery LOW',$EVENT);}}

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Benni


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);}}

Otto123

#5
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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Benni

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 :-[

michaelapp

Danke Euch für die Hilfe !!!

Es funktioniert  :D

Otto123

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>"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

igami

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?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

michaelapp

Hallo,

ich habe es als CC umgesetzt.

Gruß
Michael