Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: mxm am 22.08.05 - 12:13:14
-
Hallo,
habe folgendes geschrieben.
Set UiDoc = UiWs.CurrentDocument
Set MemoDoc = UiDoc.Document
sendto = UiDoc.FieldGetText("EnterSendTo")
damit kann ich ohne Probleme die Mail an einen Empfänger senden, doch sobald ich einen zweiten Empfänger angebe, dann geht es nicht mehr, da dem ersten Empfänger und dem zweite Empfänger ein String gemacht wird.
Wie kann ich es nun machen das die Mail auch an die anderen Empfänger gesandt wird.
Also, sobald ein Komma auftaucht, der nächste Empfänger kommt?
Ich denke mal mit einem Array, aber wie?
Habe schon gegooglet und hier im Forum auch nichts gefunden, was ich verstehen würde.
Danke schonmal im Voraus.
-
item = uidoc.document.getfirstitem("EnterSendTo")
Call item.CopyItemToDocument ( NewMemo, "EnterSendTo")
-
Set UiDoc = UiWs.CurrentDocument
Set MemoDoc = UiDoc.Document
sendto = UiDoc.FieldGetText("EnterSendTo")
Den Code kann ich so lassen oder muss ich da was ändern?
Weil ich bekomme jetzt die Fehlermeldung:--> SET required on class instance assignment
Gruß mxm
-
Also wenn du dich auf den Code beziehst den du jetzt gerade geposted hast, nein den kannst du nicht so lassen der ist auch falsch.
An dem hast du nämlich nix geändert, im Vergleich zu deiner vorherigen Version.
Klar musst du dem item=uidoc.document.get.... noch ein Set davorsetzen. Und tu dir einen Gefallen und schmeiß bei solchen Fehlern den Debugger an. Du wirst sehen das erweitert deinen Verständnishorizont ungemein.
-
Also, irgend wie klappt das nicht bei mir. Jetzt sagt der Debbuger "Typ is missmatch".
Ich erkläre mal kurz.
Wenn ich ein neues Memo öffene soll er die Daten die ich da rein schreibe in eine "Neues Memo" schreiben, welches im hintergrund geöffnett wird, und dieses "Neue Memo", wird mit den Daten gefüllt und Versand.
Dazu lese ich den Inhalt im Feld ENTERSENDTO aus und zwar so.
Set UiDoc = UiWs.CurrentDocument
Set MemoDoc = UiDoc.Document
sendto = UiDoc.FieldGetText("EnterSendTo")
Das geht auch und dieses Feld wird dann an mein erstelltes Dokument weitergeben, damit mein erstelltes Dokument weiß wo er die Mail hinsenden soll.
Doch mein Problem ist wie kann ich jetzt meinem erstelltem Dokument sagen, "DU", da kommen jetzt mehrere Empfänger und nicht nur einer.
So und hier ist mal mein Erstelltes Dokument -->
Function MessageSenden( Byval sendto As String, subject As String, message As String, sAdrReply As String, sAdrSender As String, sAdrAlias)
Dim nSession As New NotesSession
Dim nDB As NotesDatabase
Dim mailbox As New NotesDatabase("","")
Dim MailDoc As NotesDocument
Dim rtitem As NotesRichTextItem
Set nDB = nSession.CurrentDatabase
Call mailbox.Open( nDB.server, "mail.box" )
Set MailDoc = mailbox.CreateDocument
%REM So und hier dachte ich müsste eine Schleife um Mehrere Empfänger auslesen zukönnen, doch irgendwie ist die wohl falsch Forall empfaenger In MailDoc.SendTo
Msgbox(MailDoc.SendTo)
Call MailDoc.send(False,empfaenger)
Msgbox(empfaenger)
End Forall
%END REM
MailDoc.Form = "Memo"
MailDoc.SendTo = sendto
MailDoc.Recipients = sendto
MailDoc.Subject = subject
MailDoc.tmpDisplayReplyInfo = " Bitte Antworten an " + sAdrReply + " ."
MailDoc.DisplayReply = " Bitte Antworten an " + sAdrReply + " ."
MailDoc.From = sAdrReply
MailDoc.Principal = sAdrReply
MailDoc.tmpDisplayFrom_NoLogo = sAdrSender
MailDoc.DisplaySent = sAdrSender
MailDoc.tmpDisplaySentBy = sAdrSender
MailDoc.SendFrom = sAdrAlias
MailDoc.DisplayFrom = sAdrAlias + " < " + sAdrSender + " >"
MailDoc.DisplayFrom_Preview = sAdrAlias + " < " + sAdrSender + " >"
Set rtitem = MailDoc.CreateRichTextItem( "Body" )
Call rtitem.AppendText( message)
MailDoc.PostedDate = Now()
MailDoc.ComposedDate = Now()
MailDoc.DeliveredDate = Now()
MailDoc.EncryptOnSend = True
' Call MailDoc.Send(False, sendto)
Call MailDoc.Save( True, False )
End Function
-
Mal so als allererste Anmerkung:
Wie lange beschäftigst du dich schon mit Lotus Script und woher hast du den Code geklaut?
Als zweite Anmerkung:
Wenn du hier fragst dann geb deinen Kenntnisstand mit an. Bei Fragen zu Script erwarte ich das sich der Fragende zumindest mit den Basisklassen auskennt.
Als dritte Anmerkung:
Schildere dein Problem vollständig und nicht bröckchenweise so wie du es gemacht hast. Das spart Zeit und Nerven. Auf beiden Seiten.
In der aufrufenden Prozedur:
dim sendto as notesitem
set sendto = UiDoc.document.getfirstitem("EnterSendTo")
Und deine Function so anpassen:
Function MessageSenden( Byval sendto As notesItem, subject As String, message As String, sAdrReply As String, sAdrSender As String, sAdrAlias)
Dim nSession As New NotesSession
Dim nDB As NotesDatabase
Dim mailbox As New NotesDatabase("","")
Dim MailDoc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim item as notesitem
Set nDB = nSession.CurrentDatabase
Call mailbox.Open( nDB.server, "mail.box" )
Set MailDoc = mailbox.CreateDocument
MailDoc.Form = "Memo"
Set item = Maildoc.ReplaceItemValue("SendTo", sendto)
Set item = Maildoc.ReplaceItemValue("Recipients", sendto)
MailDoc.Subject = subject
MailDoc.tmpDisplayReplyInfo = " Bitte Antworten an " + sAdrReply + " ."
MailDoc.DisplayReply = " Bitte Antworten an " + sAdrReply + " ."
MailDoc.From = sAdrReply
MailDoc.Principal = sAdrReply
MailDoc.tmpDisplayFrom_NoLogo = sAdrSender
MailDoc.DisplaySent = sAdrSender
MailDoc.tmpDisplaySentBy = sAdrSender
MailDoc.SendFrom = sAdrAlias
MailDoc.DisplayFrom = sAdrAlias + " < " + sAdrSender + " >"
MailDoc.DisplayFrom_Preview = sAdrAlias + " < " + sAdrSender + " >"
Set rtitem = MailDoc.CreateRichTextItem( "Body" )
Call rtitem.AppendText( message)
MailDoc.PostedDate = Now()
MailDoc.ComposedDate = Now()
MailDoc.DeliveredDate = Now()
MailDoc.EncryptOnSend = True
' Call MailDoc.Send(False, sendto)
Call MailDoc.Save( True, False )
End Function
Fazit: du hast so ziemlich alles Falsch gemacht was man nur falsch machen kann. Den Unterschied zwischen einem String und einem NotesItem hast du auch nicht begriffen und Zielführend ist dein Aufruf auch nicht. Wie soll denn ein übergebener String in einem neu erstellten Notesdocument Mehrfachwerte annehmen können?
Zur Erklärung.
Wenn du das hier so deklarierst:
MessageSenden( Byval sendto As String, ...
und vorher so füllst:
sendto = UiDoc.FieldGetText("EnterSendTo")
dann kannst du hier doch nicht erwarten das hier Abrakadabra plötzlich ein Array rauskommt:
%REM So und hier dachte ich müsste eine Schleife um Mehrere Empfänger auslesen zukönnen, doch irgendwie ist die wohl falsch Forall empfaenger In MailDoc.SendTo
Msgbox(MailDoc.SendTo)
Call MailDoc.send(False,empfaenger)
Msgbox(empfaenger)
End Forall
%END REM
-
Danke dir für deine Antwort,
ich hatte vor ca. eineinhalb jahren für ein knappes halbes jahr mit Lotus Script zutun und jetzt seit ca. 2 Wochen wieder beruflich.
Der Code ist nicht geklaut, den habe ich selbst geschrieben, hat auch eine weile gedauert.
Gibt ja auch noch Bücher, doch alles steht dort halt auch net drin.
Naja, danke dir trotzdem für die Antworten.