Lotus Notes / Domino Sonstiges > OLE/COM-Programmierung
visual basic script – email generieren mit Anhang – Lotus Notes „Neues Nachricht
JJone:
Hello @all,
unser Vertrieb soll zukünftig Auftragsbestätigungen auch per Email ( PDF-Anhang ) versenden können.
Vorgehensweise:
Beim Drucken der Auftragsbestätigung ( aus unserem ERP-System ) wird eine PDF-Datei erzeugt, die
in einem speziellen Verzeichnis abgelegt wird. ( z.b. Auftragsbestätigung1910091448.pdf ). Anschließend kann ich eine vbs-Datei ( z.b notes1910091448.vbs ) erzeugen, die bei dem Mitarbeiter den installierten Lotus-Notes-Client anspricht und ein neues Nachrichtenfenster mit dem entsprechenden Anhang öffnet. (Auftragsbestätigung1910091448 ).
Ich habe keinerlei Erfahrung in der Programmierung mit Lotus Notes und vbs. Ich habe mir am WE
mal ein Redbook von ibm runtergeladen und mich mal ein bisschen eingelesen ( Front-End-User-Interface, Back-End-Objects usw. ) und folgenden Code zusammenbastelt. ( aus Redbook + Internet )
Soweit funktioniert es auch. Es öffnet sich eine neues Nachrichtenfenster. Aus unserem ERP-System
wird eine vbs-Datei mit folgendem Code erzeugt ( siehe unten ).
Problem:
> der Emailanhang wird leider vor den Text ( Hier kommt der Text ) eingefügt, dieser sollte
aber nach dem Text eingefügt werden. ( siehe Anhang )
> Im Notes-Client haben wir unter den Vorgaben einen Platzhalter für unsere Signatur hinterlegt.
( siehe Anhang ). Dieser Platzhalter ( Variable) sollte natürlich auch nach dem eigentlichen Text
stehen. Dies ist leider nicht so. ( siehe Anhang. )
Für Eure Hilfe sag ich schon mal Danke.
Über Code-Verbesserungen und Erklärungen würde ich mich freuen, so kann ich auch noch was
dazulernen.
Dim maildb 'As Object' 'Die Maildatenbank
Dim doc 'As Object' 'Maildokument
Dim attachme 'As Object' 'Anhang Richtext
Dim session 'As Object' 'Notes Session
Dim embedobj 'As Object' 'Eingebettest Objekt
Dim ws 'AS Object ‘ Front-End-User-Interface
set session = CreateObject("Notes.NotesSession")
set maildb = Session.GetDatabase("","")
maildb.OpenMail
set doc = maildb.CreateDocument
doc.Form = "memo"
doc.sendto = "hans.mustermann@gmx.de"
doc.Subject = "Auftragsbestätigung"
doc.body = "Hier kommt der Text"
set attachme = doc.CreateRichTextItem("Attachment")
set embedobj = attachme.EmbedObject(1454, "", "C:\Temp\Auftragsbestätigung.pdf", "")
set ws = CreateObject("Notes.NotesUIWorkspace")
ws.EditDocument(True, doc).GotoField("BODY")
Fedaykin:
Hallo JJone
Hier so müsste klappen:
Dim maildb 'As NotesDatabase' 'Die Maildatenbank
Dim doc 'As NotesDocument' 'Maildokument
Dim attachme 'As NotesRichTextItem' 'Anhang Richtext
Dim session 'As NotesSession' 'Notes Session
Dim embedobj 'As NotesEmbeddedObject' 'Eingebettest Objekt
Dim ws 'AS NotesUIWorkspace' 'Front-End-User-Interface
dim profile 'As NotesDocument
dim rtsignature 'As NotesRichTextItem
dim rtBody 'As NotesRichTextItem
dim bolSignaturEnabled 'As Boolean
dim uidoc 'As NotesUIDocument
set session = CreateObject("Notes.NotesSession")
set maildb = Session.GetDatabase("","")
maildb.OpenMail
set doc = maildb.CreateDocument
doc.Form = "memo"
doc.sendto = "hans.mustermann@gmx.de"
doc.Subject = "Auftragsbestätigung"
set rtBody = doc.CreateRichTextItem("body")
set attachme = doc.CreateRichTextItem("attachment")
set embedobj = attachme.EmbedObject(1454, "", "C:\Temp\test.vbs", "")
rtBody.appendText "Hier kommt der Text"
rtBody.addnewline 2
'Mailbox Einstellungen
set profile=maildb.getprofiledocument("CalendarProfile")
'Uns interessiert ob Signatur verwendet wird
if profile.GetFirstItem("EnableSignature").Text="1" then
'Signatur wird verwendet
bolSignaturEnabled=True
'Signatur auslesen
set rtsignature=profile.getfirstitem("Signature_Rich")
If rtsignature.Type = 1 Then
'dranhängen
rtBody.appendrtitem rtsignature
'Zeilenumschaltungen
rtBody.addnewline 2
end if
'Nun schalten wir Signatur aus!
profile.EnableSignature=""
profile.save false,false
end if
'Attachment anhängen
rtBody.appendrtitem attachme
'RichTextItem mal Updaten
rtBody.update
'RTItem mit temp. Anhang entfernen
attachme.remove
set ws = CreateObject("Notes.NotesUIWorkspace")
set uidoc=ws.EditDocument(True, doc)
uidoc.GotoField "BODY"
'Haben wir Signatur etwa ausgeschalten
if bolSignaturEnabled then
'Dann wieder ein ;-)
profile.EnableSignature="1"
profile.save false,false
end if
Gruss
Remo
JJone:
Hallo Remo,
vielen Dank für die Nachricht und deine Unterstützung.
Ich werde den Code morgen mal genauer anschauen und mir die Beutung
der einzelnen Methoden und Befehle nachlesen.
Ich habe deine Programmierung mal ausprobiert.
Jedoch erhalte ich folgendes Erbenis ( siehe Anhang ).
Gibt es vielleicht die Möglichkeit, dass ich den Bodyinhalt lösche und anschließend
den Text und die Variable für die Signatur setzte. ?
Gruß Jürgen
Fedaykin:
Hallo Jürgen
War noch kleiner Fehler drinnen. Habe Code korrigiert und Fehler mit Kommentar gekennzeichnet (habe zweimal bei Signature das e vergessen). :)
Gruss
Remo
JJone:
Hallo Remo,
vielen Dank nochmals für deine Unterstützung.
Die Signatur wird nun hinter den Text angehängt leider, aber nicht der
Anhang.
Zusätzlich erscheint gelegentlich, wenn die vbs-Datei merhmals hintereinander
ausgeführt wird, eine Windows-Script-Host-Fehlermeldung.
Kannst du mir da weiterhelfen ?
Gruß Jürgen
Das Verhalten habe ich beim Notes Client 8.5.1 und 8.5
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln