Autor Thema: SVG Plot per email (Sendmail) versenden  (Gelesen 2674 mal)

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4012
SVG Plot per email (Sendmail) versenden
« am: 25 September 2017, 16:54:44 »
Nabend,

Ich habe Debianmail schon lange aktiv am laufen zum Textmails zu versenden.
Ich scheitere jedoch vehement damit Plots als Grafik zu verschicken.
kann mir hier jemand auf die Sprünge helfen?

über Telegram kann ich die Plots problemlos senden. {plotAsPng('Plot_name')}

Danke!
/Frank
« Letzte Änderung: 27 September 2017, 15:07:25 von Frank_Huber »

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16522
  • s/fhem\.cfg/configDB/g
Antw:SVG Plot per email (Debianmail) versenden
« Antwort #1 am: 26 September 2017, 17:51:54 »
verdammt wenig Informationen, um Dir wirklich zu helfen. Ausserdem ist der Thread hier (SVG/Plots/...) komplett falsch. Du hast eher ein Linux Problem.

Spontan würde ich sagen, probier es mal mit mime-construct damit kann man so ziemlich alle Datentypen per mail verschicken.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4012
Antw:SVG Plot per email (Debianmail) versenden
« Antwort #2 am: 27 September 2017, 14:38:23 »
Linux, Perl, FHEM, ich kenn Dir nicht genau sagen wo das "Problem" liegt. dachte da es um SVG plots geht fang ich hier mal an, evtl hat ja jemand schon einen email versand realisiert.

mehr Informationen, kann ich gerne liefern:
- emailversand nach WIKI eingerichtet: https://wiki.fhem.de/wiki/E-Mail_senden#Raspberry_Pi
- emailversand über meinen eigenen Exchange Server im Heimnetz.
- emailversand als Text gelingt einwandfrei. auch mehrzeilig und mit Werten aus Readings.
- auch versende ich schon erfolgreich Plots per Telegram.

nun möchte ich zum einfacheren Archivieren die Plots ebenfalls per email versenden und scheitere daran.

Falls also jemand erfolgreich Plots per email versendet wäre ich über einen Schubbs zum richtigen code dankbar.

Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 11636
  • eigentlich eher "user" wie "developer"
Antw:SVG Plot per email (Debianmail) versenden
« Antwort #3 am: 27 September 2017, 14:49:07 »
Du verwendest nicht Debianmail zum senden, sondern sendEmail, wenn das die Anleitung war.

Dazu sagt meine Glaskugel:
-a FILEals Option nutzen, um einen Fileanhang zu versenden...
Steht auch so in der Anleitung, du mußt halt eine file haben, um $attach zu füllen.
« Letzte Änderung: 27 September 2017, 14:51:50 von Beta-User »
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4012
Antw:SVG Plot per email (Sendmail) versenden
« Antwort #4 am: 27 September 2017, 15:46:00 »
OK, danke.

damit reicht dann das {plotasPNG(....)} nicht aus als Dateiangabe.
Das Plot muss also zuerst in eine Datei, dannach dann in die email.

In einem anderen Thread habe ich das hier gefunden, ist aber von 2015.
wget -b -q "http://192.168.255.9:8083/fhem/SVG_showLog?dev=Outdoor_W_H&logdev=FileLog_Outdoor_Weather&gplotfile=hum6wind8&logfile=CURRENT&pos=" -O Outdoor_W_H.svg
sleep 2
sed -i '/path\SVGplot/d;s/\.SVGplot\././g;s/\polyline./polyline\ /g' Outdoor_W_H.svg
convert -antialias -background none Outdoor_W_H.svg Outdoor_W_H.png
wertde das mal testen. natürlich ergänzt mit Benutzer und Passwort. wget http://<user>:<pass>@serveradress



Offline Beta-User

  • Developer
  • Hero Member
  • ****
  • Beiträge: 11636
  • eigentlich eher "user" wie "developer"
Antw:SVG Plot per email (Sendmail) versenden
« Antwort #5 am: 27 September 2017, 16:07:00 »
Na ja, vielleicht geht es ja doch, ggf. muß man irgendwie versuchen, die Hochkommata halbwegs sinnvoll zu maskieren.
Du solltest halt im mindesten Fall mal den Aufruf posten bzw., was du schon versucht hast.

So hast du es vermutlich versucht, oder?
DebianMail('email@email.domain,email2@email.domain',"Subject","Text","{plotAsPng('Plot_name')}");;
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4012
Antw:SVG Plot per email (Sendmail) versenden
« Antwort #6 am: 27 September 2017, 16:11:15 »
Das waren meine Versuche:
{DebianMail('email@xxx.net',"Betreff","Text",plotAsPng('Plot_Klima_DG'))}im Log wohl die Bitfolge der png Datei gefolgt von:
Zitat
2017.09.27 16:23:29 1: sendEmail Anhang: �PNG


IHDR ,;-�:sBIT|d�tEXtSoftwaretestpixbuf-save�B� IDATx��wxTU��?3�!�PE��
E"*"����k[u-?�mյ%qQQqu��*��ˢ"`Y ��H�˺�U���@BH!���x��ܙ�)I&SN����33�ܹ���ޙ9�y(��(��(��(��(��(��(��(��(��(�$-�PE1�L����@�6���@C;� �    
-- viele viel eZeilen davon --
���$I���FN���0K�K�$I�O���A��HML�3>�$I���?�ˊY7IEND�B`�
sh: 2: : not found
2017.09.27 16:23:30 1: sendEmail returned: Sep 27 16:23:30 huber-pi-dg sendEmail[14236]: ERROR => The attachment [�PNG] doesn't exist!

{DebianMail('email@xxx.net',"Subject","Text","plotAsPng('Plot_Klima_DG')")}bringt im Log
Zitat
2017.09.27 16:25:01 1: sendEmail Anhang: plotAsPng('Plot_Klima_DG')
sh: 1: Syntax error: "(" unexpected

Habe um Debianmail nicht noch eine geschweifte gesetzt da ja der gesamte Aufruf schon auf Perl Ebene läuft.

{DebianMail('email@xxx.net',"Betreff", "Text","{plotAsPng('Plot_Klima_DG')}")}bringt
Zitat
2017.09.27 16:20:59 1: sendEmail Anhang: {plotAsPng('Plot_Klima_DG')}
sh: 1: Syntax error: "(" unexpected

« Letzte Änderung: 27 September 2017, 16:27:25 von Frank_Huber »

Offline XXL-Wing

  • Jr. Member
  • **
  • Beiträge: 52
Antw:SVG Plot per email (Sendmail) versenden
« Antwort #7 am: 26 Dezember 2018, 13:29:08 »
Hi,

Falls es noch jemand interessiert, ich habe hier eine Lösung mit der man das auch mit dem DebianMail machen kann (angepasstes Script):

######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
 my $rcpt = shift;
 my $subject = shift;
 my $text = shift;
 my $attachname = shift;
 my $attach = shift;
 my $ret = "";
 my $sender = "john\@doe.com";
 my $konto = "john\@doe.com";
 my $passwrd = "janeismywife";
 my $provider = "smtp.gmail.com:587";
 Log 1, "sendEmail RCP: $rcpt";
 Log 1, "sendEmail Subject: $subject";
 Log 1, "sendEmail Text: $text";
 Log 1, "sendEmail Attachment: $attachname";

 #write attachment
 open FILE, "> /tmp/$attachname";
 binmode FILE;
 print FILE $attach;
 close FILE;
 
 $ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a /tmp/$attachname -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";

 #remove attachment file
 unlink "/tmp/$attachname";
}


das schreibt den inhalt des attachments strings in ein temporäres file und wirft das dem mail zum Versand vor. Klappt bei mir sehr brav mit Plots.

LG
Mike

Online Frank_Huber

  • Hero Member
  • *****
  • Beiträge: 4012
Antw:SVG Plot per email (Sendmail) versenden
« Antwort #8 am: 26 Dezember 2018, 16:04:10 »
Hi,

Falls es noch jemand interessiert, ich habe hier eine Lösung mit der man das auch mit dem DebianMail machen kann (angepasstes Script):

######## DebianMail  Mail auf dem RPi versenden ############
sub
DebianMail
{
 my $rcpt = shift;
 my $subject = shift;
 my $text = shift;
 my $attachname = shift;
 my $attach = shift;
 my $ret = "";
 my $sender = "john\@doe.com";
 my $konto = "john\@doe.com";
 my $passwrd = "janeismywife";
 my $provider = "smtp.gmail.com:587";
 Log 1, "sendEmail RCP: $rcpt";
 Log 1, "sendEmail Subject: $subject";
 Log 1, "sendEmail Text: $text";
 Log 1, "sendEmail Attachment: $attachname";

 #write attachment
 open FILE, "> /tmp/$attachname";
 binmode FILE;
 print FILE $attach;
 close FILE;
 
 $ret .= qx(sendEmail -f '$sender' -t '$rcpt' -u '$subject' -m '$text' -a /tmp/$attachname -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";

 #remove attachment file
 unlink "/tmp/$attachname";
}


das schreibt den inhalt des attachments strings in ein temporäres file und wirft das dem mail zum Versand vor. Klappt bei mir sehr brav mit Plots.

LG
Mike
Danke,

Und wie ist der Befehl dazu?

Gesendet von meinem Doogee S60 mit Tapatalk


Offline XXL-Wing

  • Jr. Member
  • **
  • Beiträge: 52
Antw:SVG Plot per email (Sendmail) versenden
« Antwort #9 am: 26 Dezember 2018, 18:48:08 »
Hi,

hier ein Beispiel   :
{DebianMail("someone\@hotmail.com","Daten Wetter","Hier die Temperatur und Luftfeuchte Werte der letzen 24 Stunden.","plot.png",plotAsPng("SVG_FileLog_HM_2F22E0_1"))}

lG
Mike

 

decade-submarginal