0

„mailto“ mit Anhängen - meine Lösung (derzeit nur für macOS)

Wie wir alle wissen, kann man aus einer Datenbank heraus nur an Teammitglieder per sendmail() Mails mit Anhängen schicken.

Natürlich kann man auch an andere Mails schicken (openURL() - mailto:), doch auf Grund der Spezifikation für das mailto-Protokoll eben nur ohne Anhänge.

Hier setzt nun meine Lösung an:

Dazu habe ich eine Python-App geschrieben, die durch einen entsprechenden openURL()-Aufruf aufgerufen wird und die übergebenen Argumente dahingehend verarbeitet, dass Mails mit Anhängen an jedermann verschickt werden können.

Bevor man diese App nutzen kann, müssen erst einige Voraussetzungen erfüllt sein, dazu bitte in Admin-Account einloggen, damit die Installation systemweit erfolgt:

Installation von Python 3 (standardmässig ist unter macOS derzeit nur Python 2 installiert)
Quelle: https://www.python.org/ftp/python/3.7.2/python-3.7.2-macosx10.9.pkg

Terminal öffnen und folgende Schritte ausführen:
- sudo /Applications/Python\ 3.7/Install\ Certificates.command
- sudo pip3 install —upgrade pip
- sudo pip3 install pyobjc

Weiter gehts… ;-)

- Download der App: https://www.icloud.com/iclouddrive/0zrlzns-9EDL_cjZBPAljEAAA#

- Nach dem Entpacken die App in den Programme-Ordner verschieben (oder kopieren)

Nun müssen wir noch eine Konfigurationsdatei anlegen, bei Verwendung von Textedit darauf achten, dass dieses Datei als PLAIN-Text gespeichert wird.

Name: mailtoex.ini
Speicherort: ~/Library/Preferences/

Inhalt:

[DEFAULT]
host=
port=
starttls=1
username=
password=

[EIGENE_MAIL_ADDRESSE_EINTRAGEN]
host=
port=
username=
password=

Den DEFAULT-Abschnitt bitte so lassen, „starttls“ bei Bedarf im eigenen Abschnitt ändern - sollte allerdings heutzutage nicht mehr notwendig sein, da normalerweise alle Mail-Provider mit Verschlüsselung arbeiten (sollten).

Es können mehrer eigene Abschnitte angelegt werden, wenn man mehrere Accounts benutzen will.

Damit steht der Verwendung der App nichts mehr im Wege und ich komme zum Aufbau der URL für den openURL()-Aufruf:

Diese URL muss zwingend mit „mailtoex://MailToEx?“ beginnen, danach kommen die einzelnen Argumente, die Key/Value-Paare werden immer mit dem &-Zeichen verbunden:

from, to, cc, bcc, subject, content, attachment

Darauf achten, dass für die bei from übergebene Mail-Adresse auch der Abschnitt in der Konfigurationsdatei existiert!

Bis auf attachment darf jeder Parameter nur einmal vorkommen, im Falle von to, cc und bcc können jeweils mehrere Zieladdressen angegeben werden, die mit Semikolon getrennt werden müssen. Des Weiteren muss ein attachment-Pfad immer mit file:// beginnen (printAndSaveRecord() gibt den Pfad auch genauso zurück)!

Da die Mails immer als HTML gesendet werden, wird für Zeilenumbrüche <br> benötigt.

Nun noch ein Codebeispiel für das Zusammensetzen der URL:

From := "pgaede.office@gmail.com";
To := "test@testing.com;test2@testing.com";
Cc := "test_cc@testing.com";
Bcc := "test_bcc@testing.com";
Subject := "Das ist nur ein Test";
Content := "Hallo,<br><br>das ist wirklich nur ein Test, und ich weiß nicht einmal, ob dieses Adressen existieren.<br><br>Gruß, der Tester";
Attachment1 := printAndSaveRecord(myRecord1, "Layout1");
Attachment2 := printAndSaveRecord(myRecord2, "Layout2");
myURL := "mailto://MailtoEx?from=" + From + "&to=" + To + "&cc=" + Cc + "&bcc=" + Bcc + "&subject=" + Subject + "&content=" + Content + "&attachment=" + Attachment1 + "&attachment=" + Attachment2;
openURL(myURL)

Meine App kann sowohl aus der Desktop-Anwendung als auch aus der Web-Anwendung heraus aufgerufen werden.

Falls noch Fragen auftauchen, bitte in diesem Thread stellen. ;-)

8 Antworten

null
    • Peter_Gaede
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Klasse, fast alle Leerzeilen sind verschwunden - wozu hab ich es hier im Editor dann eigentlich formatiert? :(

    Also sorry dafür, aber ich denke, man kann es trotzdem noch verstehen...

    • Peter_Gaede
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Nachtrag (Editieren geht ja nicht) - Kleiner Schreibfehler:

     

    Falsch:

    Diese URL muss zwingend mit „mailtoex://MailToEx?“ beginnen, danach kommen die einzelnen Argumente, die Key/Value-Paare werden immer mit dem &-Zeichen verbunden:

     

    Richtig:

    Diese URL muss zwingend mit „mailtoex://MailtoEx?“ beginnen, danach kommen die einzelnen Argumente, die Key/Value-Paare werden immer mit dem &-Zeichen verbunden:

    • Sprecher
    • info.23
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Peter,

     

    hab mich grade total gefreut, diese Anleitung gefunden zu haben und hab auch gleich losgelegt... allerdings geht der iCloud Link nicht mehr. Könntest du die Datei nochmal bereitstellen? Wäre total genial, wenn das funktionieren würde...

     

    Viele Grüße

    Dominic

    • Ninox Premiumpartner
    • Bastian_Vorholt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Peter,

    mit senmail kannst du schon an andere empfänger schicken nur die absender können nur die adressen die im team sind. Aber deine Lösung klingt jedenfalls sehr intressant, da sendmail nicht zuverlässig genug ist, landet oft auf der black list. könntest du das mal im API webinar vorstellen?

    LG Basti

    • dogsch
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo,

    hat sich hier jemand einmal Gedanken gemacht, ob eine ähnliche Variante evtl. auch mit AppleScript oder Automator realisierbar wäre?

    Gruß

    OttoGeorg

    • Susan_Schaffner_Owner
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Leider funktioniert der iCloud link nicht, könntest du ihn nochmals bereitstellen wäre toll wenn ich anhänge mit versenden könnte über ninox

    • Ferienanlage am Grenzbach
    • RHartung
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Peter, könntest du mal den Link der APP freigeben?

    Gruß

    René

    • privat.1
    • vor 6 Monaten
    • Gemeldet - anzeigen

    Hallo Peter ,

    ist zwar eine weile her, aber könntest du einen link für deine App posten oder die App zukommen lassen?

    Vielen Dank und viele Grüße

    Jürgen