Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: niu am 18.04.13 - 10:10:06

Titel: E-Mail Per Lotus Script Versenden
Beitrag von: niu am 18.04.13 - 10:10:06
Hallo Miteinander,

Ich bin relativ neu im Lotus Script und nun habe ich eines erstellt, welches mir eine Mail versenden sollte. Jedoch bekomme ich die Fehlermeldung "Object Variable not set".  Ich finde den Fehler nicht.

Folgende Situation:

Eine Maske mit der man ein neues Dokument erstellen kann. Beim Speichern des Dokuments sollte eine Mail an den User mit einem Link zu dem gerade erstellen Dokument. Das Script habe ich hinter einer Aktion erstellt.

Sub Click(Source As Button)
   
   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim newdoc As NotesDocument
   Dim rtitem As NotesRichTextItem
   
   Set db = session.CurrentDatabase
   Set doc = ws.CurrentDocument
   
   Set newdoc = New NotesDocument(db)
   Set rtitem = New NotesRichTextItem(newdoc, "Body")
   
   Call rtitem.AppendText("Nachrichten Text")
   Call rtitem.AddNewline(1)
   Call rtitem.AppendDocLink (doc, "Link zu Dokument")
   newdoc.Form = "aktuelle Maske"
   newdoc.Subject = "Betreff"
   newdoc.SendTo = "user@user.com"
   Call newdoc.Send (True)
   
End Sub

Danke und Gruss

Samuel
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: ascabg am 18.04.13 - 10:18:16
Hallo,

Wo in Deinem Script initialisiert Du denn die NotesSession?


Andreas
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: niu am 18.04.13 - 10:24:32
Hallo andreas

Ich hatte sie zwischen dem Dim und dem Set db gemacht jedoch erhielt ich dabei einen Fehler "not a member: initialize".
Habe mir dafür die Hilfe von der IBM Seite gezogen, welche mich jedoch nicht weitergebracht hat. Danach habe ich sie weggelassen.

   Dim rtitem As NotesRichTextItem
   
   Call session.Initialize("mailsend")
   
   Set db = session.CurrentDatabase

Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: ascabg am 18.04.13 - 10:27:19
Hallo,

Kurzer Auszug aus der Hilfe zu Call session.Initialize().
Zitat
Note  This method is supported in COM only.

Ein einfaches Dim session As New NotesSession reicht vokommen aus, wenn Du Dich nur
innerhalb von Notes bewegst.

Ein Dim session As NotesSession verschafft Di nur eine Objekt-Variable vom Typ NotesSession, jedoch
ist diese noch Nothing.


Andreas
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: TRO am 18.04.13 - 10:27:41
zwei Änderungen:

Dim session as New NotesSession


Set doc = ws.CurrentDocument.Document


hth

Thomas
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: ascabg am 18.04.13 - 10:29:32
Habe ich doch noch glatt uebersehen.

Wo definierst Du eigentlich ws?

Und warum sendest Du die Maske mit? (newdoc.Send(True)
Es handelt sich allem Anschein nach doch NUR um eine normale Mail mit ein wenig Text und einem Doc-Link.


Andreas
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: niu am 18.04.13 - 10:46:41
Vielen Dank für eure Antworten

@Andreas Das mit der Session hat Funktioniert.

Nun als ich die die Form nicht mitgeschickt habe habe ich einen Fehlermeldung gekriegt. Wenn ich  newdoc.send("") auf false setzte kann ich newdoc.Form = "Maske" wegglasen ?

Das ws habe ich nirgends definiert, ich wusste nicht wich man das Aktuelle Dokument zuweist, daher habe ich das aus Google.




Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: ascabg am 18.04.13 - 10:55:16
Nein.

Du musst schon angeben, mit welcher Form die Mail beim Empfaenger angezeigt werden soll.
Und da es sich um eine Mail handelt ist die Standard-Maske halt "Memo"

newdoc.Form = "Memo"

Und beim Senden kannst Du dann newdoc.Send(False) verwenden.

Und warum google verwenden. Nimm doch zuerst die Designer-Hilfe. Hier findest Du zu den meisten Themen die
Antworten und auch entsprechende Beispiele (Code).


Andreas
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: niu am 18.04.13 - 11:07:27
Oke, danke

Die Designer Hilfe verwende ich schon jedoch habe ich zu diesem Thema kein Info gefunden (falsch gesucht vielleicht  :-:).


Nun bekomm ich die Fehlermeldung "Variant does not contain an object" ich weis was die Meldung bedeutet leider finde ich keine solche falsch Zuweisung. ???
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: ascabg am 18.04.13 - 11:10:18
Onne zu wissen, an welcher Stelle Deines aktuellen Codes der Fehler kommt, ist es schwierig
bis nahezu unmoeglich zu sagen, was den Fehler ausloest.

Und das Dokument, welches Du versenden willst, ist hoffentlich bereits gespeichert?

%EDIT
Designer Hilfe.
Klasse NotesDocument und hier die Methode Send.


Andreas
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: Mitch am 18.04.13 - 11:14:10
Heyho,

eine ordentliche Fehlerbehandlung wird dir bei der Suche nach dem Problem sicherlich helfen.

Lies dir doch mal das hier durch: http://atnotes.de/index.php/topic,11980.0.html

Zusätzlich solltest du dir den Prozess mal im Debugger ansehen.

Beste Grüße,

Mitch
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: niu am 18.04.13 - 11:40:45
@Mitch Vielen Dank für deine Info die hat mich weitergebracht


@Andreas
Habe das ganze Debuggen lassen der Fehler liegt bei dieser Zeile Code:
Set doc = CurrentDocument.Document

Die Variable "doc" wurde so definiert:
Dim doc As NotesDocument


Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: Peter Klett am 18.04.13 - 11:43:27
...
Und das Dokument, welches Du versenden willst, ist hoffentlich bereits gespeichert?
...
Das ist nicht nötig, ein Dokument kann versendet werden, ohne gespeichert zu sein.
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: Peter Klett am 18.04.13 - 11:45:14
@Mitch Vielen Dank für deine Info die hat mich weitergebracht


@Andreas
Habe das ganze Debuggen lassen der Fehler liegt bei dieser Zeile Code:
Set doc = CurrentDocument.Document

Die Variable "doc" wurde so definiert:
Dim doc As NotesDocument




Dim workspace As New NotesUIWorkspace
Dim doc As NotesDocument
Set doc = workspace.CurrentDocument.Document


Besser wäre m.E.

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

ist aber Geschmacksache ...
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: Mitch am 18.04.13 - 11:46:25
Weiterer Tipp:

Gibt unter "Options" mal folgendes ein:

Code
Option Explicit

Damit erzwingst du, dass du alle verwendeten Variablen auch deklarieren musst.

Ich vermute dein Fehler hängt damit zusammen, dass du "ws" nicht deklariert/initialisiert hast. Kein Workspace, kein CurrentDocument, kein Document.

Gruß,

Mitch

Edit: Korrektur.
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: ascabg am 18.04.13 - 12:39:45
...
Und das Dokument, welches Du versenden willst, ist hoffentlich bereits gespeichert?
...
Das ist nicht nötig, ein Dokument kann versendet werden, ohne gespeichert zu sein.

Ist soweit richtig.
Etwas falsch von mir geschrieben.
Ich meinte natuerlich das Dokument, welches als Dok-Link versendet werden soll.


Andreas
Titel: Re: E-Mail Per Lotus Script Versenden
Beitrag von: niu am 18.04.13 - 14:01:01
Oke, Vielen Danke  :)

Läuft nun einwandfrei.