Termineinladungen auf Kommandozeile verschicken
Termineinladungen auf Kommandozeile verschicken
Hallo,
ich möchte einen Termin an mehrere Empfänger verschicken. Wenn ich das über die Webmaske meines Emailproviders einrichte bekommt der Empfänger automatisch einen Kalendereintrag geschickt. Versuche ich es manuell indem ich eine Email mit angehängter .ics-Datei verschicke, kommt beim Empfänger auch nur eine Email mit angehängter Datei an.
Was macht der Mailprovider anders als ich?
LG
Tintom
ich möchte einen Termin an mehrere Empfänger verschicken. Wenn ich das über die Webmaske meines Emailproviders einrichte bekommt der Empfänger automatisch einen Kalendereintrag geschickt. Versuche ich es manuell indem ich eine Email mit angehängter .ics-Datei verschicke, kommt beim Empfänger auch nur eine Email mit angehängter Datei an.
Was macht der Mailprovider anders als ich?
LG
Tintom
-
- Beiträge: 3022
- Registriert: 03.11.2009 13:45:23
- Lizenz eigener Beiträge: Artistic Lizenz
-
Kontaktdaten:
Re: Termineinladungen auf Kommandozeile verschicken
Stichwort "REST"
Welcher Provider?
Bzw. schau dir die Unterschiede im Quelltext der Mails an.
Welcher Provider?
Bzw. schau dir die Unterschiede im Quelltext der Mails an.
dann putze ich hier mal nur...
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
- seep
- Beiträge: 544
- Registriert: 31.10.2004 14:21:08
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: HSK
Re: Termineinladungen auf Kommandozeile verschicken
Das ist leicht: Er schickt einen Kalendereintrag, du einen .ics-Anhang.Tintom hat geschrieben:Wenn ich das über die Webmaske meines Emailproviders einrichte bekommt der Empfänger automatisch einen Kalendereintrag geschickt. Versuche ich es manuell indem ich eine Email mit angehängter .ics-Datei verschicke, kommt beim Empfänger auch nur eine Email mit angehängter Datei an.
Was macht der Mailprovider anders als ich?
Definiere: "das ... einrichte" und "Kalendereintrag". Und wo wird denn überhaupt was eingetragen? Ich verstehe die Frage nicht.
-
- Beiträge: 3022
- Registriert: 03.11.2009 13:45:23
- Lizenz eigener Beiträge: Artistic Lizenz
-
Kontaktdaten:
Re: Termineinladungen auf Kommandozeile verschicken
Du musst eine multipart Nachricht mit eingebundenem Anhang erzeugen, nicht einfach ein Attachment anhängen.
Noch dazu muss die ics-Datei bestimmte Felder enthalten damit Thunderbird/Lightning oder auch Outlook das sofort als neuen Termin wahrnimmt und darauf entsprechend reagieren kann.
Mit python kannst du sowas einfach machen. Ob das auch mit mailx auf der Shell geht, weiß ich jetzt gar nicht.
Noch dazu muss die ics-Datei bestimmte Felder enthalten damit Thunderbird/Lightning oder auch Outlook das sofort als neuen Termin wahrnimmt und darauf entsprechend reagieren kann.
Mit python kannst du sowas einfach machen. Ob das auch mit mailx auf der Shell geht, weiß ich jetzt gar nicht.
dann putze ich hier mal nur...
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
Re: Termineinladungen auf Kommandozeile verschicken
Das ist der richtige Ansatz!scientific hat geschrieben: Bzw. schau dir die Unterschiede im Quelltext der Mails an.
Man kann auch /usr/sbin/sendmail direkt mit manuell erstelltem Mailquellcode fuettern.scientific hat geschrieben: Mit python kannst du sowas einfach machen. Ob das auch mit mailx auf der Shell geht, weiß ich jetzt gar nicht.
Use ed once in a while!
Re: Termineinladungen auf Kommandozeile verschicken
Danke an euch alle für den Input. Ich hab gedacht, die Arbeit hat sich schon jemand vorher gemacht, aber scheinbar bin ich der erste.
Die Zeilen von BEGIN:VCALENDAR bis END:VCALENDAR sind der Inhalt der Datei Einladung.ics, die als Anhang mitgesendet wird. Somit ist wohl der entscheidende Unterschied die Zeile Content-Type.
Damit kann ich weiter basteln.
Danke, das hat mich weitergebracht! Auf den Punkt gebracht ist es wohl nur eine kleine Sache:scientific hat geschrieben: Bzw. schau dir die Unterschiede im Quelltext der Mails an.
Code: Alles auswählen
#Email mit Kalenderanhang
<snip>
--refeiks-6bdfd3df-a490-44f1-a14c-3640955142cf
Content-Type: text/html; charset=UTF-8
--refeiks-6bdfd3df-a490-44f1-a14c-3640955142cf
Content-Type: text/calendar
Content-Disposition: attachment; filename=kalendereintrag.ics
Content-Transfer-Encoding: base64
</snip>
Code: Alles auswählen
#Kalendereintrag des Mailproviders
<snip>
------=_Part_294764878_630339259.1492724529919
Content-Type: text/calendar; charset=UTF-8; method=REQUEST
Content-Transfer-Encoding: 7bit
BEGIN:VCALENDAR
<...>
END:VCALENDAR
------=_Part_294764878_630339259.1492724529919--
------=_Part_294764879_1791553789.1492724529919
Content-Type: application/ics; charset=UTF-8; method=REQUEST; name=Einladung.ics
Content-Disposition: attachment; filename=Einladung.ics
Content-Transfer-Encoding: 7bit
Content-Class: urn:content-classes:calendarmessage
</snip>
Damit kann ich weiter basteln.
-
- Beiträge: 3022
- Registriert: 03.11.2009 13:45:23
- Lizenz eigener Beiträge: Artistic Lizenz
-
Kontaktdaten:
Re: Termineinladungen auf Kommandozeile verschicken
So is es.
Aber du wirst so ein inline-Attachment nicht so ohne weiters hinbringen... Ich habs schon probiert... Daher bin ich auf python gekommen...
Aber du wirst so ein inline-Attachment nicht so ohne weiters hinbringen... Ich habs schon probiert... Daher bin ich auf python gekommen...
dann putze ich hier mal nur...
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
Re: Termineinladungen auf Kommandozeile verschicken
Ich hätte jetzt als nächstes Content-Type und die Kalenderdaten in eine Datei geschrieben und dann ein sendmail < DATEI darauf losgelassen.scientific hat geschrieben:So is es.
Aber du wirst so ein inline-Attachment nicht so ohne weiters hinbringen... Ich habs schon probiert... Daher bin ich auf python gekommen...
Das kann ich mir dann wohl sparen ?!
-
- Beiträge: 3022
- Registriert: 03.11.2009 13:45:23
- Lizenz eigener Beiträge: Artistic Lizenz
-
Kontaktdaten:
Re: Termineinladungen auf Kommandozeile verschicken
Probiers. Vielleicht hab ichs ja auch nicht richtig gemacht...
dann putze ich hier mal nur...
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
Eine Auswahl meiner Skripte und systemd-units.
https://github.com/xundeenergie
auch als Debian-Repo für Testing einbindbar:
deb http://debian.xundeenergie.at/xundeenergie testing main
Re: Termineinladungen auf Kommandozeile verschicken
Nach einigem hin und her ist mein Stand folgender:
Ich versende die Mail mit
DATEI:
Mein Mailprovider empfängt die Mail und fragt mich sofort, ob ich den Termin in meinem Kalender eintragen will.
Sehr wertvoll war RFC 5545. Wichtig ist, dass UID (Unique ID) für jeden Termin einen einzigartigen String enthält. Auch scheint wohl PRODID wichtig zu sein, denn ohne ging es nicht
Positiv überrascht hat mich, dass Microsoft Outlook sehr saubere Kalendereinträge generiert. Ohne Outlook wäre ich keinen Schritt weiter gekommen und hätte wohl frustriert aufgegeben.
Wer die Kalendereinträge nicht in Klartext übertragen möchte, kann den Termin auch mit base64 codieren (macht Outlook standardmäßig).
Dazu muss das Inline-Statement noch angepasst werden. Der obige Kalendereintrag sieht dann so aus:
Ich versende die Mail mit
Code: Alles auswählen
mail.mailutils --append="Content-Type: multipart/alternative; boundary="inline01"" -F sender@example.org -s "BETREFF" receipient@example.org <DATEI
Code: Alles auswählen
--inline01
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Lorem ipsum ....
--inline01
Content-Type: text/calendar; charset="utf-8"; method=REQUEST
Content-Transfer-Encoding: 7bit
BEGIN:VCALENDAR
METHOD:REQUEST
VERSION:2.0
PRODID:12345
BEGIN:VEVENT
ORGANIZER;CN=Absender Name:MAILTO:sender@example.org
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Absender Name:MAILTO:sender@example.org
ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Empfänger Name:MAILTO:receipient@example.org
DESCRIPTION:Blablabla.\n\n
SUMMARY:Einladung
DTSTART;TZID=Europe-London:20170527T140000
DTEND;TZID=Europe-London:20170527T150000
UID:20170523abcdefghijlmnopqrrrrefuuk
DTSTAMP:20170422T090258Z
LOCATION:City
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:REMINDER
TRIGGER;RELATED=START:-PT15M
END:VALARM
END:VEVENT
END:VCALENDAR
--inline01--
Sehr wertvoll war RFC 5545. Wichtig ist, dass UID (Unique ID) für jeden Termin einen einzigartigen String enthält. Auch scheint wohl PRODID wichtig zu sein, denn ohne ging es nicht
Positiv überrascht hat mich, dass Microsoft Outlook sehr saubere Kalendereinträge generiert. Ohne Outlook wäre ich keinen Schritt weiter gekommen und hätte wohl frustriert aufgegeben.
Wer die Kalendereinträge nicht in Klartext übertragen möchte, kann den Termin auch mit base64 codieren (macht Outlook standardmäßig).
Dazu muss das Inline-Statement noch angepasst werden. Der obige Kalendereintrag sieht dann so aus:
Code: Alles auswählen
Content-Type: text/calendar; charset="utf-8"; method=REQUEST
Content-Transfer-Encoding: base64
QkVHSU46VkNBTEVOREFSCk1FVEhPRDpSRVFVRVNUClZFUlNJT046Mi4wClBST0RJRDoxMjM0NQpC
RUdJTjpWRVZFTlQKT1JHQU5JWkVSO0NOPUFic2VuZGVyIE5hbWU6TUFJTFRPOnNlbmRlckBleGFt
cGxlLm9yZwpBVFRFTkRFRTtST0xFPVJFUS1QQVJUSUNJUEFOVDtQQVJUU1RBVD1ORUVEUy1BQ1RJ
T047UlNWUD1UUlVFO0NOPUFic2VuZGVyIE5hbWU6TUFJTFRPOnNlbmRlckBleGFtcGxlLm9yZwpB
VFRFTkRFRTtST0xFPVJFUS1QQVJUSUNJUEFOVDtQQVJUU1RBVD1ORUVEUy1BQ1RJT047UlNWUD1U
UlVFO0NOPUVtcGbDpG5nZXIgTmFtZTpNQUlMVE86cmVjZWlwaWVudEBleGFtcGxlLm9yZwpERVND
UklQVElPTjpCbGFibGFibGEuXG5cbgpTVU1NQVJZOkVpbmxhZHVuZwpEVFNUQVJUO1RaSUQ9RXVy
b3BlLUxvbmRvbjoyMDE3MDUyN1QxNDAwMDAKRFRFTkQ7VFpJRD1FdXJvcGUtTG9uZG9uOjIwMTcw
NTI3VDE1MDAwMApVSUQ6MjAxNzA1MjNhYmNkZWZnaGlqbG1ub3BxcnJycmVmdXVrCkRUU1RBTVA6
MjAxNzA0MjJUMDkwMjU4WgpMT0NBVElPTjpDaXR5CkJFR0lOOlZBTEFSTQpBQ1RJT046RElTUExB
WQpERVNDUklQVElPTjpSRU1JTkRFUgpUUklHR0VSO1JFTEFURUQ9U1RBUlQ6LVBUMTVNCkVORDpW
QUxBUk0KRU5EOlZFVkVOVApFTkQ6VkNBTEVOREFSCg==
--inline01--