Attachment einfügen (LotusScript)

  • Halli Hallo,


    ich versuche ein Attachment (PDF Lieferscheine) in meine mittelsLotius Script generierte Mail einzufügen.
    Das Problem ist das sich das Attachment immer verändert und ich bin gerade echt ein wenig ratlose, kann mir jmd ein Tipp bzw Rat geben?




    Quellcode:




    Function MailSend (mail As NotesDocument)

    Dim se As New NotesSession
    Dim db As NotesDatabase
    Dim TextItem As NotesRichTextItem
    Dim TextStyle As NotesRichTextStyle
    Dim empfaenger As String
    Dim datei As String
    Dim pdf As String




    Set db = se.CurrentDatabase
    'Neues Dokument erstellen
    Set mail = New NotesDocument(db)


    'Empfänger
    'empfaenger = InputBox("Please insert the receiver", "Send to","Receiver")
    'If


    'Standardfelder setzen
    Call mail.ReplaceItemValue("sendto", empfaenger)
    Call mail.ReplaceItemValue("subject", "ABC Shipping Information")


    'Feld Body erstellen
    Set TextItem = New NotesRichTextItem(mail, "body")


    Set TextStyle = se.CreateRichTextStyle
    TextStyle.Bold = True
    Call Textitem.AppendStyle(TextStyle)


    'Text einfügen
    Call TextItem.AppendText("Dear Sir or Madam")
    TextStyle.Bold = False
    Call Textitem.AddNewline(2)
    Textstyle.FontSize = 10
    Textstyle.NotesColor = 0
    Call Textitem.AppendStyle(TextStyle)
    Call Textitem.AppendText("Please be informed, that a shipment has left our warehouse with UPS.")
    Call Textitem.AppendText("In the attachment you will find their delivery note.")
    Textitem.AddNewline(3)
    Call Textitem.AppendText("To track your shipment, please use the following link:")
    Textitem.AddNewline(1)
    Call Textitem.AppendText("http://www.ups.com/tracking/tracking.html ")
    Textitem.AddNewline(3)
    Call Textitem.AppendText("Kind Regards")
    Textitem.AddNewline(2)
    Call Textitem.AppendText("Order Processing Department")
    Textitem.Addnewline(1)
    Call Textitem.AppendText("ABC GmbH")
    Textitem.AddNewline(2)
    Textstyle.FontSize = 10
    Textstyle.NotesColor = 0

    pdf = Dir("\\Server\DeptHomes\Operations\OK Logistics\CSV\Lieferscheine\", 0)
    If pdf = "" Then
    Else
    Call Textitem.EmbedObject(EMBED_ATTACHMENT,"","\\Server\DeptHomes\Operations\OK Logistics\CSV\Lieferscheine\")
    End If


    'Dokument senden
    Call mail.Send(True)


    End Function

  • Hallo,


    Ich sehe keinen Dateinamen bei EmbedObject.


    Und mit Dir(*.pdf) kannst Du doch alle Dateien in einem Verzeichnis durchlaufen, um zu sehen
    ob es sich um eine PDF-Datei handelt oder nicht.


    %Edit
    Und was soll Dein Script machen, wenn in dem Verzeichnis einmal 2 oder gar noch mehr
    PDF-Dateien liegen.
    Und was passiert, wenn die Mail erfolgreich versendet wurde mit der PDF-Datei in dem betreffenden
    Verzeichnis


    Andreas

  • Okay danke für die schnell Antwort.


    Mein Problem ist, es kommt eine Email rein mit einer LieferCSV Datei, wo Trackingnummer, Kundenummer, Rechnungsnummer etc enthalten sind, diese wird ausgelesen und in einzelne Strings gesplittet. Des Weiteren gibt eine weitere CSV Datei auf dem Server, die ebenfalls ausgelesen wird (Emailadresse und Kundennummer).
    Ich bin jetzt soweit das er die Kundennummer aus der LieferCSV mit der Datei auf dem Server abgleicht und i somit schon mal die richtige Mailadressen habe für die jeweilige Kundennummer.
    Die PDF die immer angehängt werden soll enthält im Dateinamen die Rechnungsnummer.


    Wie häng ich denn ein Attachment an, wenn sich der Name immer ändert?


    %Edit
    Es sind immer mehrere PDFs in dem Verzeichnis und nachdem versenden bleiben diese dort auch liegen

    • Offizieller Beitrag
    • Offizieller Beitrag

    du kannst den Namen doch berechnen.


    Code
    kuNr = "123456"
    pdf = "\\Server\pfad\" & kuNr & ".pdf"
    • Offizieller Beitrag

    der System-Account kann nicht auf UNC-Pfade zugreifen.
    Aber auch dies lässt sich realisieren.


    Über ein "net use" mit der Angabe eines Users und einem Kennwort geht es. Dabei wird ein Laufwerk zugewiesen. Nachteil im Domino-Log ist der User und das Kennwort im Klartext lesbar.
    Ein anderer Weg ist es eine CMD-Datei zusammen zu bauen und dann mit net USe das Laufwerk mappen, die Datei lokal kopieren, das Laufwerk wieder trennen. Die Datei wird dann in einem eigenen Fenster gestartet. Dein Script muss bis zum Ende der CMD warten und kann dann die Datei verarbeiten. Dann steht auch nichts im Domino-Log.


    Gruß
    Dirk

    • Offizieller Beitrag

    ... oder falls vorhanden per FTP abholen (geht auch per Script).


    Gruß
    Dirk

  • Function PDFs As Boolean

    Dim i As Integer
    Dim Positionen As Variant



    For i=0 To UBound(Lieferscheine)-1
    Positionen = Split(Lieferscheine(i), ";")

    If InStr(PathP, Positionen(2)) Then
    Print ".pdf" & " - Reference " & Positionen(2)
    End If

    Next


    End Function





    PathP = der Pfad auf dem Server, wo die PDFs liegen


    ER vergleicht nicht die Referencenumber aus der CSV mit der im PDF Namen .... habt ihr ne Idee?

    • Offizieller Beitrag

    Wo kommt das Array Lieferscheine her?
    Dies wird nicht an die Funktion übergeben.
    Schau dir dir Variablen und Objecte mal im Debugger an.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Das Array Lieferschein ist eigtl nur zum Splitten des Strings da und das er alle Strings an Position 2 (was in der CSV Datei die Reference Nummer ist) mit den PDFs im Ordner vergleichen soll

  • Hi,


    Bleibt trotzdem die Frage, wo kommt der Array "Lieferscheine" her. An die Funktion "PDFs" wird er al sParameter
    ja nicht uebergeben.
    Handelt es sih hierbei etwa um eine globale Variable?


    Und was sagt denn der Debugger?
    Sind alle verwendeten Variablen auch mir Werten gefuellt?
    Hast Du eine Fehlerbehandlung eingebaut?



    Andreas

  • "Lieferscheine" habe ich global deklariert.


    Der Debugger springt zwar in die Function rein, aber ich bekomm die Werte nicht raus.


    Fehlerbehandlungen habe ich noch keine eingebaut