Autor Thema: visual basic script – email generieren mit Anhang – Lotus Notes „Neues Nachricht  (Gelesen 25305 mal)

Offline JJone

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
  • Negative Erwartungen bringen negative Ergebnisse.
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")
« Letzte Änderung: 19.10.09 - 19:15:45 von JJone »
Domino - Server 8.02
Notes - Client 8.5

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
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
« Letzte Änderung: 20.10.09 - 21:17:06 von Fedaykin »
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline JJone

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
  • Negative Erwartungen bringen negative Ergebnisse.
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
Domino - Server 8.02
Notes - Client 8.5

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
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
« Letzte Änderung: 19.10.09 - 23:42:01 von Fedaykin »
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline JJone

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
  • Negative Erwartungen bringen negative Ergebnisse.
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
Domino - Server 8.02
Notes - Client 8.5

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
1. zu Deiner Windows-Script-Host-Fehlermeldung:

was steht denn in Deinem Script in Zeile 54 .... sonst können wir hier nur Oraclen

2. im Programm gibt es drei fast voneinander unabhängige Blöcke, deren Reihenfolge die Reihenfolge von Text, Signatur und Anhang regeln:

Anhang:
Code
set embedobj = attachme.EmbedObject(1454, "", "C:\Temp\test.vbs", "") 

Text:
Code
attachme.addnewline 1 
attachme.appendText "Hier kommt der Text" 

Signatur:
Code
'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
      'Zeilenumschaltungen
      attachme.addnewline 2
      'dranhängen
      attachme.appendrtitem rtsignature 
   end if

   'Nun schalten wir Signatur aus!
   'War falsch:
   'profile.EnableSignatur=""
   'richtig:
   profile.EnableSignature=""
   profile.save false,false 
end if 

alles muss natürlich nach
Code
set attachme = doc.CreateRichTextItem("body") 

und vor
Code
'RichTextItem mal Updaten
attachme.update 
stattfinden

Durch Variieren der Reihenfolge der Blöcke solltest Du Dein gewünschtes Ergebnis hinbekommen (+ event. ein paar zusätzliche attachme.addnewline x )


hth

Thomas

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Hallo Jürgen

Habe den Code abgeändert. Klatsch Anhang nun erst in anderes RichTextItem um danach anzufügen.

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline JJone

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
  • Negative Erwartungen bringen negative Ergebnisse.
Hallo Remo,

super jetzt funktionierts.

Nur wenn die vbs-datei mehrmals ausgeführt wird erscheint folgende Fehlermeldung:
( siehe Anhang )

Unter den Vorgaben ist das Häkchen bei "Meine ausgehenden Mailnachrichten automatisch mit Signatur versehen nicht mehr angehakt. ( Vielleicht deshalb die Fehlermeldung )

Zeile 59

set ws = CreateObject("Notes.NotesUIWorkspace")
59 > with ws.EditDocument(True, doc)
   .GotoField "BODY"
end with

Gruß Jürgen
Domino - Server 8.02
Notes - Client 8.5

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Hallo Jürgen

Habe nochmal Script angepasst. Wenn ich so sehr schnell mehrfach hintereinander aufrufe (was ich nicht wirklich empfehle!) dann kann er bei mir die NotesSession nicht initialisieren (wahrscheinlich weil er mit letztem Script noch beschäftigt ist).

PS: Wenn das Script mehrere solche Mails direkt hintereinander erstellen soll würde ich mir überlegen, dass das Script nur einmal läuft aber mehrere Mails in "einem Rutsch" erstellen kann.

Gruss
Remo
« Letzte Änderung: 20.10.09 - 21:24:59 von Fedaykin »
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline JJone

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
  • Negative Erwartungen bringen negative Ergebnisse.
Hallo Remo, Hallo Thomas

habe noch ein paar Konstellationen getestet.

Wenn ich das vbs-Datei ausführe erscheint nun folgende WHS-Fehlermeldung ( siehe Anhang )

Wenn ich den Notes-Client nach der Ausführung der vbs-Datei schließe erfolgt eine
Notes Fehlerberichterstattung: ( siehe Anhang )

Führe ich die vbs-Dateien mehrmals aus ( in gewissen Zeitabständen ) wird/ist das Häkchen bei
“Meine ausgehenden Mailnachrichten automatisch mit Signatur versehen“ nicht mehr gesetzt.

WHS-Fehlermeldung bei Zeile 60

set ws = CreateObject("Notes.NotesUIWorkspace")
zeile 60 > set uidoc=ws.EditDocument(True, doc)
uidoc.GotoField "BODY"

Vielleicht könnt ihr noch mal drüberschauen, wenn ich Zeit habe ( wenn.. J ) werde ich mich
mit dem Zeug auseinandersetzten.
Domino - Server 8.02
Notes - Client 8.5

Offline JJone

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
  • Negative Erwartungen bringen negative Ergebnisse.
Hallo Remo, Hallo Thomas,

ich habe in dem Script mal alles Sachen bzgl. Signatur auskommentiert. Jetzt funktioniert es.

Für das Anhängen unserer Geschäftssignatur verwenden wir von Group Technologie den IO-Suite-Trailer. An jede ausgehende Nachricht wird die Geschäftssignatur angehängt.

Normalerweise müsste ich keine Signaturangaben am Notes-Client hinterlegen. Doch von unseren
Mitarbeitern wurde gewünscht, dass die Signatur immer direkt hinter der geschriebenen Nachricht
plaziert wird. Dies ist nicht der Fall, wenn ich auf eine eingegangene Email antworte. Dann würde die Signatur nicht direkt unter dem verfassten Text stehen, sondern am Ende der Email. Dies war für viele
irritierend.

Aus diesem Grund habe ich an jedem Client unter den Notes-Vorgaben den Platzhalter %Signatur%
hinterlegt. Damit teile ich IQ-Suite-Trailer mit, dass hier die Geschäftsangaben eingefügt werden müssen.

Beim Ausführen der vbs-Datei benötige ich nicht unbedingt die %Signatur%. Da ja die Email von uns aus versandt wird und nicht auf eine email geantwortet wird.

Frage: Kann ich beim Erstellen einer neuen Nachricht ( mittels vbs-Datei ) , den Bodyinhalt nicht leeren und anschließen den Text und Anhang hinzufügen. ?
Domino - Server 8.02
Notes - Client 8.5

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Unter den Vorgaben ist das Häkchen bei "Meine ausgehenden Mailnachrichten automatisch mit Signatur versehen nicht mehr angehakt. ( Vielleicht deshalb die Fehlermeldung )

Das ist eindeutig nicht die Ursache, sondern die Folge des Absturzes und der davon ausgelösten Fehlermeldung.

Frage: Kann ich beim Erstellen einer neuen Nachricht ( mittels vbs-Datei ) , den Bodyinhalt nicht leeren und anschließen den Text und Anhang hinzufügen. ?

???
Versteh ich nicht! Du erzeugst doch mit dem Script von Remo ein komplett neues und leeres Body-Item
set rtBody = doc.CreateRichTextItem("body")
füllst es dann und lässt Dir das Ergebnis am Bildschirm anzeigen (per ws.EditDocument).


Versuch mal am Ende Deines Scriptes alle benutzten Notes-Objekte zu löschen (in LotusScript ist sowas nicht nötig, da macht das der Garbage-Collector ganz sauber und alleine, könnte aber sein, dass das unter VB notwendig ist.

nach dem Muster Delete "objekt" mit diesen Notes-Objekten (in der Reihenfolge):
embedobj
attachme
rtsignature
rtBody
profile
doc
maildb
session
uidoc
ws


hth

Thomas

Offline JJone

  • Junior Mitglied
  • **
  • Beiträge: 79
  • Geschlecht: Männlich
  • Negative Erwartungen bringen negative Ergebnisse.
Hallo Fedaykin, Hallo Thomas,

so habe mal wieder Zeit gefunden mich dem Thema zuwidmen.

Leider habe ich immer noch das Problem, dass beim Ein –und Ausschalten der Signatur
irgendwann vom WSH ein Ausnahmefehler erzeugt wird.

Folgende Idee:

Ich könnte bei den Mitarbeitern ( die diese Funktion benötigen ) eine Vorlage ohne Signatur
definieren. Vorraussetzung wäre, dass ich diese Vorlage ( Werkzeuge\Vorlagen ) mittels vbs und notes-prog. ansprechen kann.

Ist dies möglich ?

Merci im Voraus. J

Gruß Jürgen
« Letzte Änderung: 08.12.09 - 16:55:48 von JJone »
Domino - Server 8.02
Notes - Client 8.5

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz