0

Integromat - E-Mails aus Datenbank senden, mit Anhängen

Hallo Forum,

ich habe es mit Hilfe dieses youtube Tutorials geschafft das Szenario einzurichten und es funktioniert auch tadellos.

https://youtu.be/UmUeXKvJLpI

Im Tutorial wird aber nicht bechrieben wir man die Anhänge der Records mit versendet.
Ich habe mir dann selbst was zusammengebastelt mit den Modulen "List files from Record" und "Download file from Record".
Das funktoniert auch super, aber nur wenn der Record EINEN Anhang hat.

Gibt es aber  bspw. 2 Anhänge, dann werden leider auch 2 E-Mails gesendet. Ich möchte natürlich erreichen, dass die beiden Anhänge in einer mail gesendet werden.

Ich vermute, dass es mit der Option "Attachements" im Modul EMail zusammenhängt. Dort muss evtl. über "Map" ein Array hinein??
Leider bekomme ich hier nicht weiter.  :-(

Ich habe das Szenario zum anschauen exportiert:
https://drive.google.com/file/d/1SGYYGE8uow3r4_hZ-aVjB9U1_Zx2FoYs/view?usp=sharing

Falls jemand den Kniff kennt, würde ich mich freuen

Danke und Gruß
Oliver M.

72 Antworten

null
    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Moin Oliver
    Ich habe die Datenbank im Webinar ergänzt.
    Jetzt hast du die Möglichkeit die Mail per Mailhook oder Webhook aus Ninox zu versenden.
    Blueprints, Screenshots und eine Erklärung findest du in der jeweiligen Tabelle.

    Der Ninox-Webhook sollte auch funktionieren wenn du die zutreffenden API-Daten entweder mit überträgst oder im Integromat permanent hinterlegst.
    Gruss
    Uwe

    • CitizenDeveloper
    • Oliver_meerkamp
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe,

    klasse Arbeit, da gibt es außer mir sicher noch andere die das gut gebrauchen können!

    Dankeschön!

     

    Gruß, Oliver M.

    • Niels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo in die Runde,

    ich habe das gleiche Thema, bei dem ich nicht weiter komme. Die vielen Beiträge hier zu dem Thema haben mich schon sehr weit gebracht. Danke für die tollen Hilfestellungen hier im Forum. Da ich erst vor einer Woche auf Ninox aufmerksam geworden bin, habe ich hier nochmal eine Vertständnisfrage:

    Uwe spricht von: "Ich habe im Webinar die Tabelle 'Email_To_Integromat_Mailhook' (Grünes Palmensymbol) reingestellt.
    Eine Beschreibung und der Integromat Bluebrint sind im ersten Datensatz."

    -> Ist das eine Beispieltabelle, die Du erstellt hast, an der man sich orientieren darf?

    Da ich das gleiche Problem habe, dass nach dem Aggregator auch jeweils mehrere Mail mit jeweils einem anderen Anhang verschickt werden, dachte ich, ich Frage hier nochmal, wie Ihr es gelöst habt. Ich habe es leider noch nicht ganz hin bekommen. Ich freue mich über eine Rückmeldung.

    Danke und Gruß, Niels

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Niels.

    Die Beispiel Datenbank nennt sich 'eMail to Integromat' und liegt im Team Webinar DE 2020.

    Sie beinhaltet zwei Tabelllen inklusive zugehörige Integromat Blueprints um emails aus Ninox heraus mit mehreren Anhängen mit dem Integromat und eigener Mailadresse zu versenden. Entweder per Mailhook oder Webhook. 
    Sie dient zum testen und Verständnis des Vorganges und die jeweiligen Integromat Bluprints können auf die eigene Datenbank angepasst werden.

    Sofern du noch nicht Teammitglied im Webinar DE 2020 bist, gib deine Ninox Mailadresse an un ich lade dich ein.
    In dem Team findest du viele Beispieltabellen von Usern, die ihre Lösungen zu Problemen reingestellt haben.

    • Niels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe,

    vielen Dank für Deine Rückmeldung. Das klingt ja wirklich super! Vielen Dank für den Tip. Ich freue mich, wenn Du mich dort mit hinzufügen könnetst. Meine E-Mail ist niels.d@me.com . Vielen Dank und Gruß, Niels

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Niels
    Teameinladung ist an deine Mailadresse raus. Falls nicht im Posteingang, mal im Spam nachsehen.
    Gruss
    Uwe

    • Niels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe,

    herzlichen Dank. Den Zugang habe ich erhalten und konnte es nun auch perfekt in mein Projekt einarbeiten. Prima!

    Ich habe noch ein Ziel, dass etwas darüber hinaus geht. Meine Frage dazu ist, ob mein Ansatz in die richtge Richtung geht:

    1. Ich erstelle ein Angebot in Tabelle Angebote. Hier erstelle ich im Datensatz ein PDF, welches als Mail an den Kunden geschickt werden soll. Mit dem Button "Als Mail verschicken" übergebe ich die Daten in eine Mail Tabelle ->

    2. In der Tabelle Mails kann ich nun den Text zur Mail verfassen. Der senden Button löst nun das Senden via Integormat an den Kunden aus. Dabei wird das PDF aus der Angebotstabelle mitgegeben.

    soweit so gut...

    Nun habe ich eine dritte Tabelle mit nur einem Datensatz, indem 4 weitere PDFs liegen (z.B. AGB oder andere immer gleiche PDFs). Diesen sollen nach Auswahl (Checkbox) - in der Mailtabelle - ebenfalls mitgeschickt werden.

    Wie kann ich diese zusätzlichen nur ausgewählten PDFs mit übermitteln bzw. abrufen, die in einer dritten Tabelle liegen? Hast Du oder ventuel jemand anderes dazu auch eine Idee?

    Viele Dank und viele Grüße,

    Niels

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Niels

    Das Problem bei dieser Konstellation im Integromat, ist die Schwierigkeit, dass die zu versendenen Dokumente in verschiedenen Tabellen liegen.

    Integromat kann diese nicht in einem Schlag abrufen um sie in nur einer Mail zu versenden.

    Wenn du das Dokument aus einer Tabelle abrufst ist das eine Operation. Der Abruf aus einer anderen Tabelle ist eine neue Operation.
    Damit hast du wieder das Problem, das für jede Operation eine Mail im Integromat erzeugt wird.
    Die verschiedenen Operationen können im Integromat-Aggregator nicht zusammengeführt werden.
    Deshalb wird, bei mehreren Anhängen, für das Holen der FileNamen auch nicht der Intgromat Ninox-Knoten benutzt sondern der HTTP-Knoten.

    Sinnvoller ist es alle zu versendenen Dokumente in die Mail Tabelle zu packen.
    Das muss nicht unbedingt als Anhang geschehen. Man könnte hier auch eine Untertabelle mit einem Bildfeld erstellen in denen die Dokumente zu dieser Mail liegen.

    Du wirst zur Zeit nicht drum herum kommen, entweder mehrere Mails zu versenden, damit du die anderen Dokumente nur einmal in der Datenbank hast.
    Oder alle Dokumente in einen Record zusammenführen und so die gleichen Dokumente mehrmals in der Datenbank zu haben, um nur eine Mail zu versenden.

    Wie bereits in dieser Diskussion erwähnt, hat Bastian von der Firma Magic Networks solch eine Lösung für einen Kunden gebaut.
    Er ist als Partner bei Ninox aufgeführt.

    • CitizenDeveloper
    • Oliver_meerkamp
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Niels,

    also, wenn ich dich richtig verstanden habe, sehe ich da eigentlich kein Problem.

    Es ist ja so, dass wenn du eine neue Mail verschickst dafür ein neuer Datensatz erzeugt wird.
    Dieser Datensatz enthält ja den Text der Mail und vielleicht noch einen Anhang, z.B. die Rechnung.
    Du möchtest doch dann an dieser Stelle entscheiden, (also kurz vorm Absenden) ob hier z.B. die AGB noch dazu kommen soll, oder!?

    Wenn dem so ist, dann brauchst du dir in dem Moment nur die in einer anderen Tabelle gelagerten Dokumente in diesen Datensatz zu holen.

    Dabei ist es aber so, dass die Dokumente natürlich dann jedem E-Mail-Datensatz  immer wieder anhängen.
    Ich persönlich finde das nicht tragisch, im Gegenteil. Am Ende kannst du ja in jedem Kunden auch später noch sehen, welche E-Mails mit welchen Anhängen mal geschickt wurden.

    Um Dokumente zu erstellen und oder in den neuen Datensatz zu holen, schau dir mal diese beiden Befehle in der Ninox Referenz im Webinar Team an:

    importFile

    printAndSaveRecord

     

    Gruß

    Oliver

    • Niels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe, hallo Oliver,

    danke für Eure Hilfe. Ok, das klingt logisch.

    Das heisst, meine Lösung geht dahin, aus den anderen Tabellen die entsprechenden Anhänge in den Datensatz der Mailtabelle reinzukopieren, um dann aus einem Datensatz die Inhalte und Anhänge an den Integromaten als eine Operation senden/holen zu lassen.

    Das habe ich soweit versucht, aber bin leider am kopieren der Anhänge gescheitert, so dass ich dann alle Anhänge nativ in der Mailtabelle habe. Ich habe es zwar geschafft eine Referenz auf die Dateien zu erzeugen und mir diese in Bildfeldern anzeigen zu lassen in der Mailtabelle. Die eigentlichen Dateien liegen aber ja noch in den anderen Tabellen, was der Integromat natürlch auch merkt und deswegen keine Dateien abrufen kann.

    Ich habe folgende Scripte versucht:

    importFile(this, (record('Mail Inhalte', 2)))

    importFile(this, first(files('Mail Inhalte')))

    importFile(this, first(files(record('Mail Inhalte', 2))))

    Sollte das kpieren an sich nicht möglich sein, bleibt ja nur noch als letzte Chance, die 4 PDFs auf meine Internetseite zu packen (geheimer Link) und diese dann entsprechend beim klick in den Dtensatz per "http" zu laden. Das Angebot, könnte ich ja beim erstellen doppelt erstellen und einmal direkt in dem Maildatensatz speichern.

    Habt Ihr dazu vielleicht noch einen Ansatz, bzw. einen Tip, wie das mit dem kopieren von Anhängen funktioniert?

    Danke vielmals! Niels

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Niels.
    Meines Wissens funktioniert es noch nicht mit einfachen Ninox-Bordmitteln den Anhang aus Tabelle A in Tabelle B zu kopieren.
    In der Cloudversion könnte man es ohne Drittprogramm mit der REST-API hinbekommen oder wieder den Integromat benutzen.
    Es gibt im NX-API Team ein Beispiel wie Daten aus unterschiedlichen Datenbanken übertragen werden. 
    Das kann man für Anhänge auch innerhalb einer Datenbank nutzen um von Tabelle A nach Tabelle B zu kopieren.

    Die Datenbankbezeichnungen lauten:  'REST_Source Database' und' REST_Destination Database'.
    Die dort verwendeten API-Keys, TeamID, DatabaseID,TableID und FieldID stimmen nicht und müssten angepasst werden.
    Und zum kopieren von Anhängen muss das Script auch angepasst werden.
    Aber man sieht die REST-API Syntax, wie sie aufgebaut ist und was dafür benötigt wird. Und man muß kein Geld für Drittanbieter ausgeben.

    Es ist etwas Arbeit sich da hinein zu denken. Zum Verstehen kann man die deutsch/englische Ninox-Dokumentation zur REST-API lesen.
    Es ist eigentlich der gleiche Aufbau wie der HTTP-Knoten im Integromat des Webhooks, der zum abfragen der Namen der Anhänge zuständig ist.
    Nur, das du diesmal per POST-Befehl den Anhang an den Record in der Mailtabelle anhängst der gemailt werden soll.

    In der Mailtabelle kannst du dann einen Button für jedes Dokument bauen, der dieses als Anhang hineinkopiert und nicht mehr sichtbar ist, wenn der Anhang da ist.

    Alternativ legst du alle Dokumente in einen Ordner der Festplatte ab und kopierst sie dir händisch in den Record wenn benötigt.

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Niels

    Ich habe da mal eine kleine Integromat-Sache gebaut, die ein Dokument von einer anderen Tabelle in die MailVersende Tabelle zu dem Record kopiert.
    Das Scenario sieht wie folgt aus:
    Bildschirmfoto Attachments kopieren

    Das zugehörige Formular hat 2 Zustände: Attachment noch nicht vorhanden / Attachment vorhanden
    Bildschirmfoto Attachment nicht vorhanden

    Bildschirmfoto Attachment vorhanden

    Wie gesagt, man kann es auch mit der Ninox REST-API bauen und so auf den Integromat verzichten.

    • Niels
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe, hallo Oliver,

     

    Uwe, jetzt bist Du mir zuvor gekommen. Habe gestern noch den ganzen Tag gebastelt und es schließlich hin bekommen. Ich freue mich, dass ich einen Weg finden konnte, den ich gern einmal aufzeigen möchte:

     

    1. In der Angebotstabelle habe ich einen Button erstellt, der neben dem PDF, welches in dem eigenen Datensatz gespeichert wird, auch zwei weitere Datensätze in zwei weitere Tabellen erstellt (Tabelle "Mail" und Tabelle "Mail senden"). Die Tabelle Mail soll als Historie gelten, in der an sich keine Anhänge gespeichert werden, sondern nur per Referenz angezeigt werden sollen. Somit kann ich in Zukunft immer sehen, wann ich was in welcher Form an den Kunden geschickt habe.

    2. In der Mail Tabelle habe ich nun die Möglichkeit die E-Mail zu verfassen und ebenfalls die Möglichkeit pro Button einen Anhang hinzuzufügen. Dieser Anhang wird aber nicht in dem Maildatensatz (in dem ich mich gerade befinde) geladen, sondern per 'Mail senden'.(Bildfeld := importFile(this, "http://pdf.domain.de/AGB.pdf") in die dritte Tabelle (Mail senden) geladen (Ich habe die 4 immer gleichen PDFs auf meinen Webserver geladen und per HTTP Abrufbar gemacht).

    3. Die "Mail senden" Tabelle ist nun eine inhaltliche Kopie der "Mail" Tabelle, mit dem Unterschied, dass diese die Anhänge besitzt. Die "Mail senden" Tabelle bleibt aber für den Nutzer verborgen und dient nicht zur Bearbeitung. Sie ist nur dafür da, um nach dem Versand wieder gelöscht zu werden, damit ich mir die Datenbank nicht mit den immer gleichen PDFs voll mache (habe aktuell nur 2GB frei.)

    4. Den Webhook löse ich durch einen Button in der Mail Tabelle aus.

     

    Und weil ich echt Spass an der ganzen Nummer habe, habe ich über Integromat noch ein Update Record eingebaut, das mir bei erfolgreichem Versand eine Sendebestätigung anzeigt. Und zusätzlich werden die relevanten Anhänge (das Angebot) auf den FTP Server hochgeladen.

     

    Ich bin aber sehr gespannt auf die REST Api Lösung. Das werde ich auch nochmal ausprobieren.
    Vielen Dank Uwe, für Deine Mühe! Ich finde das wirklich prima und schätze jetzt schon dieses Forum sehr.

     

    Du sprichst hier noch von dem NX-API Team. Ist das eine andere Datenbank, zu der man auch einen Zugang benötigt? Das würde ich mir gern mal ansehen.

     

    Vielen Dank soweit! Dank Eurer Hilfe klappt es :-)

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Niels

    Super, das du eine für dich praktikable Lösung gefunden hast.
    Die Einladung zum NX-Api Team ist raus.
    Leider habe ich dich nur als Editor eingeladen. 
    Wenn du dem Team beigetreten bist, ändere ich es in Admin um.

    • Permabau GmbH
    • Wolfgang_Conradt
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe,

    ich bin nich grün hinter den Ohren und hab keine Ahnung wo dieses webinar de2020 ist und wie ich dazu eingeladen werden kann. Das thema treibt mich aber gerade sehr um.

    Danke und grüße

    Wolfgang

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Wolfgang

    Wenn du an den Ninox Support eine Mail sendest mit deiner bei Ninox benutztn Mailadresse und um Aufnahme in das Team “Webinar DE 2020” bittest, erhältst du eine Einladung zu dem Team. Du kannst auch gleich um Aufnahme in das “NX API” Team bitten, wenn du dich mit der REST-API von Ninox näher beschäftigen möchtest. Dort findet man Beispieldatenbanken von Usern, welche verschiedene Anbindungen per REST-API an andere Systeme beinhalten.

    • Lars
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe, ich beschäftige mich gerade mit dem von dir hochgeladenen Script. Leider bekomme ich den Fehler "ERR_INVALID_CHAR: Invalid character in header content ["Authorization"]" beim triggern. In einem Node.js Forum habe ich gelesen, dass mal ein bisschen mit der Groß und Kleinschreibung spielen soll und das es läuft, wenn alles kleingeschrieben ist (auch im Schaltflächencode 'content-type': 'application/json'). Hilft leider alles nichts. Per Postman kann ich mit dem Header (Key Authorization und Value Bearer "API-KEY") wunderbar auf alles zugreifen. Hast Du noch nen Tipp? (Und danke nochmal für die Erklärung, dass nur Owner-Keys laufen :) )

    Lars

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Lars
    So richtig werde ich nicht schlau aus deinem Text.
    Wo tritt der Fehler auf? In Ninox oder im Integromat?
    Und wo wird was getriggert.
    Du meinst doch die Datenbank eMail mit Integromat?
    Wenn du die Mail per Webhook an Integromat sendest, musst du in Ninox nur die Webhook-Adresse vom Integromat in das Script eintragen.
    Da sollte kein Fehler passieren, wenn der Button gedrückt wird.
    Im HTTP-Node vom Integromat, musst du den API-Key des TeamOwners eintragen, in dessen Team die Datenbank liegt.
    Im Ninox-Node, der das File von Ninox lädt, muss auch der entsprechende API-Key eingestellt sein.
    Der Rest sollte dann automatisch laufen.

    • Lars
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe,

    der Fehler tritt in Integromat im HTTP Modul auf. Das drücken der Schaltfläche hab ich als "triggern" bezeichnet. Ich drück also den Knopf, der Webhook reagiert und Integromat schmeisst mir den Fehler raus. API Key (des Owners) ist gemäß deines Blueprints/Anleitung eingetragen .Ohne die " ' " (der Key funktioniert mit einem einfachen Mailversand über Integromat). 

     

    Unbenannt2

    • Lars
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich kann im Header kein Zeichen finden, welches da nicht hingehören könnte. Zwischen Bearer und dem Key ist ein Leerzeichen, das habe ich versuchsweise auch mal weg gelassen. Im API Key sind noch Minusse, die hab ich auch schon weg gelassen oder durch _ ersetzt. Also eher Trail & Error :)

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Lars
    Ich habe den Flow nochmal getestet.
    Und er funktioniert.
    Hast du den Wert Richtig eingetragen?

    Der Value mus folgendermaßen aussehen. Bearer API-Key (siehe Screenshot)
    Falls du mit der REST-API von Ninox noch nicht so richtig vertraut bist, kann ich dir die Ninox->Hilfe->Dokumentation empfehlen.
    Dort steht beschrieben, wie der Aufbau der REST-API aussehen soll um mit Ninox zu kommunizieren.
    Solltest du weiterhin Probleme haben, einfach melden. Wir werden das Problem schon lösen.
    Bildschirmfoto 2021-06-23 um 08.18.14

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Du kannst auch folgendes Script im Button verwenden:
    let vAPIKey := "Bearer API-Key";(API-Key = Ninox-TeamOwner API-Key)
    let vWebhook := "https://hook.integromat.com/4yv9igaue7hvt5h9vio1jxn1hhf4be3f";
    let vRecordID := text(number(this));
    let data := {
    APIKEY: vAPIKey,
    TeamID: teamId(),
    DatabaseID: databaseId(),
    TableID: tableId("Mail_Out_Webhook"),
    RecordID: vRecordID,
    vMailAn: 'E-Mail_An',
    vBetreff: Betreff,
    vTextPlain: Text_Plain,
    vTextHTML: Text_HTML
    };
    do as server
    http("POST", vWebhook, {
    'Content-Type': "application/json"
    }, data)
    end

    Hier überträgst du den Ninox-API-Key mit nach Integromat.
    Du musst den HTTP-Node noch wie folgt anpassen(ScreenShot)
    Bildschirmfoto 2021-06-23 um 08.37.40

    • Lars
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Uwe, danke für die Hilfe. Ich bin noch nicht 100% vertraut aber ich verstehe in etwa worum es geht :)
    Wenn ich den API-Key aus Ninox raus an Integromat übergebe funktionert die Authentifizierung. Das HTTP Modul läuft durch. Jetzt hängts am Ninox-Modul. Er kann den Dateinamen nicht im Iterator finden. Es hat den Anschein, als würde der Anhang nicht an den Webhook überliefert. Auch das hinzufügen von "attachments: files(this)" im Schaltflächencode brachte keine Lösung. Im Iterator kann ich 3 Optionen wählen (Total number of bundles, Value und Bundle order position) - das vom Ninox-Modul geforderte "name" ist also nicht dabei.

    Deine alternative mit dem Mailhook rennt ohne Probleme.

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hast du den Integromat Blueprint aus der Datenbank in dein Integromat importiert oder hast du den Flow in Integromat nachgebaut?
    Das Ninox-Modul sucht nach einem oder mehrere Anhänge im Record. (Büroklammer-Tab) 

    Der Flow funktioniert nicht mit Bildfeldern im Record.
    Wie sieht denn dein Ninox-Script aus (lösche den API-Key vor dem Posten), der den http-call auslöst?

    • Lars
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich habe Importiert, die Anhänge (.pdf + Bilder) befinden sich nicht in Bildfeldern sondern im Anhang.

     

    let vAPIKey := "Bearer A-P-I";
    let vWebhook := "https://hook.integromat.com/......";
    let vRecordID := text(number(this));
    let vAttachments := files(this);
    let data := {
    APIKEY: vAPIKey,
    TeamID: teamId(),
    DatabaseID: databaseId(),
    TableID: tableId("Protokoll"),
    RecordID: vRecordID,
    vMailAn: Mail,
    vBetreff: "Protokoll über illegale Müllentsorgung " + ProtokollnummerText,
    vTextPlain: ProtokollnummerText,
    attachments: vAttachments
    };
    do as server
    http("POST", vWebhook, {
    'Content-Type': "application/json"
    }, data)
    end

Content aside

  • vor 1 JahrZuletzt aktiv
  • 72Antworten
  • 6767Ansichten
  • 2 Folge bereits