SVG Plot per email (Sendmail) versenden

Begonnen von Frank_Huber, 25 September 2017, 16:54:44

Vorheriges Thema - Nächstes Thema

Frank_Huber

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

betateilchen

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.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Frank_Huber

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.

Beta-User

#3
Du verwendest nicht Debianmail zum senden, sondern sendEmail, wenn das die Anleitung war.

Dazu sagt meine Glaskugel:
-a FILE
als 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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Frank_Huber

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



Beta-User

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-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Frank_Huber

#6
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
Zitat2017.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
Zitat2017.09.27 16:20:59 1: sendEmail Anhang: {plotAsPng('Plot_Klima_DG')}
sh: 1: Syntax error: "(" unexpected


XXL-Wing

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

Frank_Huber

Zitat von: XXL-Wing 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
Danke,

Und wie ist der Befehl dazu?

Gesendet von meinem Doogee S60 mit Tapatalk


XXL-Wing

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