0

SendMail mit Anhang

Ich möchte gerne meine Rechnung per Button verschicken. An die Email müsste aber dann die Rechnung als PDF. Den Befehl SendMail kenne ich und auch den Befehl um ein Dokument zu erstellen. Nur wie bekomme ich den Anhang an die Email ?

55 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    sendmail({

    from: MeineMail,

    to: DeineMail,

    [...]

    attachments: MeineDatei

    });

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ups, die Funktion heißt natürlich sendEmail().

    • mac338
    • vor 6 Jahren
    • Gemeldet - anzeigen

    attachments: MeineDatei, bezieht sich dann auf die Datei die als Dokument am Datensatz hängt , oder ?

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Das ist der Name, den du bei importFile() angegeben hast. Hier mal ein komplettes Beispiel, bei dem der Dateiname aus der Rechnungsnummer generiert wird ("Rechnung" ist das Drucklayout):

     

    let DateiName := Rechnungsnummer + ".pdf";
    let DateiAnhang := importFile(this, printAndSaveRecord(this, "Rechnung"), DateiName);
    sendEmail({
         from: "MeineMail@Meinserver.tld",
         to: "DeineMail@deinserver.tld",
         cc: "AndereMail@andererserver.tld",
         subject: "Rechnung " + DateiName,
         text: "Moin, anbei meine Rechnung " + DateiName + ". Grüße, Ihr Lieferant",
         attachments: DateiAnhang
        });

     

    Statt der Variablen könnte man auch eine Datei direkt ansprechen:

     

    attachments: "Jahresbericht2018.pdf"

     

    Oder bspw. auch alle angehängten Dateien versenden:

     

    attachments: files(this)

     

    Ach so, das "cc" funktioniert aktuell noch nicht (wird einfach ignoriert), soll aber bald funktionieren.

     

    Alle Angaben wie immer ohne Gewähr. ;)

    • mac338
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Super das funktioniert. Vielen Dank schonmal.

    Er bringt mir noch ein Fehler, das er die Datei nicht finden kann. Kann ich eine "Waitstep" einbauen.

    Screenshot 2018-07-30_10-26-47

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Ist die Fehlermeldung aus der Cloud-Version? Dazu kann ich leider gar nichts sagen, bei mir hat es problemlos funktioniert. Das wäre eher ein Fall für den Support oder die echten Cracks.

     

    Bei "Waitstep" weiß ich jetzt auch nicht genau, was du meinst. Vielleicht sowas:

     

    https://ninoxdb.de/de/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/die-neue-funktion-dialog-5b5ecc8a615501550d8cbd36?post=5b5ecc8a615501550d8cbd37

    • mac338
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Nein bin in der MAC App aber an die cloud angebunden.

    Ja das er nach dem Befehl Datei erstellen 5 Sekunden wartet bevor er die Email versendet

    • mac338
    • vor 6 Jahren
    • Gemeldet - anzeigen

    oder ich muss die 2 Schritte trennen. D.h. ein button zum erstellen der Datei und den 2. für das versenden

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Bei der Konstellation mit Mac-App bin überfragt. Vielleicht kann dazu jemand was sagen, der auch mit Mac-App plus Cloud arbeitet.

     

    Davon abgesehen: Warum sollte 5 Sekunden gewartet werden? Worauf? Was soll in der Zeit passieren?

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hat sich überschnitten. Ja, zwei einzelne Schritte wären natürlich möglich.

    • mac338
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Habe mit dem Support gesprochen. wenn ich eine Lösung habe, werde ich Sie hier online stellen.

    • Ninox-Professional
    • planoxpro
    • vor 6 Jahren
    • Gemeldet - anzeigen

    👍

    • Pyromixer.1
    • vor 6 Jahren
    • Gemeldet - anzeigen

    In meinen Datensätzen werden mehrere PDF erstellt. Die kommen z.B. aus diversen Untertabellen hinzu zum "Haupt PDF" der Hauptmaske. Die muss ich noch händisch aus den einzelnen Untertabellen herausfischen und wieder in der Haupttabelle als Datei anhängen um alle PDF Dokumente eines Datensatzes auf einen Blick zu haben.

    Soweit ich weiss, gibts hier noch keine Automatsierungsmöglichkeit all diese PDF aus den Untertabellen automatisch zusammen in einer "Haupttabelle" hinten am Dateianhang zu sammeln. Wenn das möglich wäre, würde für mich sogar die Ninox Cloud interessant, da ich dann alle PDF per send mail Button direkt aus Ninox zu ihren Empfängern schicken könnte. Noch genialer wäre auch wenn diese PDF automatisiert zu einem zip File verpackt und dann an die Mail angehangen werden könnten.

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Den selben Fehler habe ich nun auch. Solang ich das PDF nicht unbenannt hatte, funktionierte es. Jetzt wo Ninox dem PDF beim generieren einen eigenen Namen gibt und danach versenden soll, kommt der selbe Fehler wie er hier schon dargestellt wurde. Muss man wirklich 2 Buttons für die eine Aktion erstellen?

    • Birger_H
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Verwenden Sie die Funktion 

    –––
    do as server
       ...
    end
    –––

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    ?

    • Team Lead Customer Service
    • joerg
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Die Funktion muss (als Klammer) um dein bisheriges Statement, z. B.:

     

    do as sever

        send e-mail(.......

        .......

    end

     

    Gruß, Jörg

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke Jörg.

    Heute stundenlang alles Mögliche probiert. Keine Chance mit der Mac Version von Ninox das in einem Ablauf (Button) unterzubringen. Selbst getrennt mit 2 Buttons muss man mind. 5-7 Sekunden warten bevor man die Mail senden kann nach dem generieren der PDF Dateien (habe 3 PDF versucht mit etwas mehr Inhalt wie Bildern usw.)

    Ob mit oder ohne "do as server" vor SendMail, auch vor den anderen Scripts mal probiert usw. Keine Chance. "Socket hang up" ist dann auch eine Meldung die gern kommt.

     

    In der Browserversion von Ninox dagegen kein Problem. Dort bleibt der Button eine Weile verfärbt während Ninox herum rödelt und dann kommen auch schon die Mails mitsamt Anhängen an. Die Ninox Mac Version schafft es anscheinend nicht schnell genug die Dateianhänge auf den Ninox Server zu laden und SendMail greift dann ins Leere. Es müsste eine Warteschleife möglich sein oder Ninox müsste erkennen, dass die Dateien noch nicht da sind und warten.

    • Testuser_Alex_Hanisch
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hi Folks,

    hatte das gleiche Problem mit dem Versand von speziellen Files. Für ein einzelnes File (PDF Versand per eMail) folgende Lösung:

    let Filename := "MP_Bogen.pdf";
    let DSNr := Nr;
    let VersandFile := "C" + text(DSNr) + "/" + Filename;
    importFile(this, printAndSaveRecord(this, "(01)MPBogen"), Filename);
    if 'Sachbearbeiter Sofortrechnng' != null then
    alert("Mail bereit für Versand !");
    FilenameSRupload := Filename;
    sendEmail({
    from: "meine-email@mail.com",
    to: 'Sachbearbeiter Sofortrechnng'.'E-Mail',
    subject: "Subjecttext",
    text: 'eMailtext",
    attachments: VersandFile
    })
    end

    Der Trick: Für den Dateinamen kann man nicht den reinen Dateinamen aus dem importFile Befehl nehmen. Ninox speichert die Dateien anscheinend unter einem Verzeichnis ab, das mit einem großen "C" beginnt, dann die DatensatzID (.Nr) und dann "/"

    setzt man nun den Dateinamen für das attachment wie folgt zusammen:

    Dateiname := "C" + [Datensatz.Nr] + "/" + [Filename aus dem importFile]

    und as dann als

    attachments: Dateiname

    wird das PDF problemlos angehängt und verschickt, und das ganz ohne Warteschleifen :)

     

    Gruß,

    Alex

    • Testuser_Alex_Hanisch
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Ergänzung:

    bei dem Codebeispiel steht der sendmail befehl in einer If-Schleife, wo geprüft wird, ob überhaupt eine eMail-Adresse vorliegt. Also nicht verwirren lassen.

    • Testuser_Alex_Hanisch
    • vor 5 Jahren
    • Gemeldet - anzeigen

    2. Nachtrag:

    Erfolgreich getestet für

    -Mac-App

    -iPad-App

    -Web-App

     

    hat in allen drei Varianten funktioniert.

    • Testuser_Alex_Hanisch
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Noch ein Nachtrag: der vorangestellte Buchstabe (in dem obigen Beispiel "C") ist für jede Tabelle anders, könnt ihr über ein Funktionsfeld mit

    concat(files(this))

    ausleisen. Da werden euch die gespeicherten Files mit dem vorangestellten Verzeichnis angezeigt.

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Es ist ein bisschen anders, Ninox benennt die Tabellen intern mit A,B,C....... Die Dateien werden intern tatsächlich so benannt

    Tabellen Bezeichnung+ID+"/"+Dateiname

    In deinem Fall ist die Tabelle "C", es kann aber auch A oder B sein.

    Leo

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Oh, ich habe deinen letzten Post übersehen.

    • Pyromixer.1
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Immerhin ist man dem Problem auf der Spur...

     

    Ich habe ja zudem noch Leos schöne Formel hinter attachements hängen:

    --- attachments: for ff in for jj from 0 to cnt(files(this)) do
    let ii := item(files(this), jj);
    let IN := index(text(ii), "/") + 1;
    let myName := substr(text(ii), IN);
    if substr(myName, 0, 2) = "AA" or substr(myName, 0, 2) = "BB" or substr(myName, 0, 2) = "CC" or substr(myName, 0, 2) = "DD" or substr(myName, 0, 2) = "EE" or substr(myName, 0, 2) = "FF" then
    jj
    end
    end do
    item(files(this), ff)
    end ---

     

    Diese sucht bei mir die PDF Dateien mit den ersten beiden Buchstaben AA, BB, CC usw. im Dateinamen und wenn vorhanden hängt es die an die Mail, alle anderen Dateien im Dateianhang werden beim Versand ignoriert.

     

    Ich traue mich gar nicht mehr den Code hier da nun noch rein zu wurschteln und wüsste adhoc auch gar nicht wo ich den genau wie noch einbauen sollte damit auch Leos geniale Suchfunktion nach den korrekten Dateien erhalten bleibt. Mein System arbeitet was SendMail angeht seit einigen Tagen produktiv und ich bin nun natürlich sehr vorsichtig mit Basteleien im SendMail Bereich...