Domino 9 und frühere Versionen > Entwicklung

Serien-Mail per Script

(1/2) > >>

JohnSilver:
Hallo,


In Script1 werden die Mailadressen aus meiner Kundendatenbank(für die ausgewählten Dokumente)  in meine Maildatenbank in ein neues Maildokument in das Feld "SendTo" übernommen.

Das andere Script(Script2) öffnet per Button in meiner Kundendatenbank
eine Auswahl, in welcher man die entsprechende Mailvorlage aus der Maildatenbank wählt.

Was nicht funktioniert (Script3) ist, daß die Mailadresse(n) aus Script1 in
die ausgewählte Vorlage aus Script2 im Feld "SendTo" steht.

Was muß in Script3 geändert werden?

Besten Dank im voraus!

Gruß

Michael


ata:
... das ist nur über den Code betrachtet nicht ganz so einfach, aber eines hat mich auf die schnelle stutzig gemacht:

--- Code: ---   For x = 1 To collection.Count
      Set note = collection.GetNthDocument(x)
      SendToNames(counter) = GetMailAddress
      counter = counter + 1
   Next

--- Ende Code ---

SendToNames(counter)

... sollte glaube ich...

SendToNames(x)

... heißen...

ata

JohnSilver:
Das Problem wäre gelöst, in der Mailvorlage heißt das Feld nicht
SendTo sondern EnterSendTo!

Jetzt habe ich allerdings ein neues Problem:

wenn ich im unteren Abschnitt folgendes einfüge:

mailnote.body = Anrede

werden meine Serienmails erstellt, jedoch wird der Text in der Vorlage
durch die Anrede überschrieben.

Bei dem folgenden Code wird der Inhalt der Vorlage nicht überschrieben,
jedoch erscheint bei der zweiten Mail zusätzlich die Anrede von der
ersten Mail, bei der dritten Mail die Anrede der ersten beiden(zusätzlich) usw.

Call body.AppendText(Anrede)


Ich bin für jede Hilfe sehr sehr dankbar!

--------------------------------------------------------------------------------------------------------


   vMailInfo = Evaluate( "@MailDbName" )
   Set newcollection = ws.Picklistcollection(PICKLIST_CUSTOM, False, vMailInfo(0), vMailInfo(1), "Vorlage", "Vorlage wählen", "Wählen Sie bitte eine Vorlage für das neue Memo.")
   Set mailnote = newcollection.getfirstdocument
   
   
   For y =0 To counter-1  
     
     
      mailnote.EnterSendTo = SendToNames(y)
      mailnote.Form = Memo
      Set body = mailnote.GetFirstItem("Body")
      Set rtnav = body.CreateNavigator
      Anrede = (SendToBriefanrede(y) + " " +  SendToNachname(y) + ",")
      rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)  
     
     
     
      Call body.BeginInsert(rtnav)
     
      Call body.AppendText(Anrede)
     
      Call body.AddNewLine(1)
      Call body.AddNewLine(1)
      Call body.EndInsert
     
      mailnote.Logo = session.GetEnvironmentString("DefaultLogo",False)
      mailnote.Principal = profile.Owner(0)
      Call ws.EditDocument(True,mailnote)
     
     
   Next

Micha:
Mit dem skript schreibst du immer alles in ein Dokument.
Mir fehlt hier irgendwie das:
Set mailnote = newcollection.getNextDocument
oder  Forall y in newcollection

Was ist denn der counter?
Ich kenn auch die ganzen methoden für das richtextitem gar nicht, gibt es die in 5 überhaupt?
Bei appendText auf das Item müsste die Anrede meiner Meinung nach hinten angehangen werden.
Ich bau mir in so einem Fall immer den Text für das rtItem komplett neu.

Vielleicht hilft es ja,

Gruß Micha


 
 
     

JohnSilver:
Hallo Micha,

einige der Richtext-Befehle funktionieren nur in Notes6
(da wir demnächst auf Lotus6Server und Client umstellen,
macht dies keine Probleme)!

Options public
Use "MailLibrary"


Sub Initialize
'declare local variables
   Dim x As Integer
   Dim y As Integer
   Dim z As Integer
   
   
'Dim uiws As New notesuiworkspace
   Dim newcollection As NotesDocumentCollection
   Dim noteUIEditDocument As NotesUIDocument
   Dim noteCursorDoc As NotesDocument
   Dim vMailInfo As Variant
   Dim body As NotesRichTextItem
   Dim rtitem As NotesRichTextItem
   Dim rtnav As NotesRichTextNavigator
   Dim Anrede As String
   
   
'instantiate objects
   
   InstantiateVariables
   
   If Not collection Is Nothing Then
      If (collection.Count = 0) Then
         Messagebox "No documents were selected.",0,"Error"
         Exit Sub
      End If
   Else
      Exit Sub
   End If
   
   Redim SendToNames(collection.Count-1)
   Redim SendToNachname(collection.Count-1)
   Redim SendToBriefanrede(collection.Count-1)
   
   
'hier werden die Mailadressen,Nachname sowie Briefanrede aus meiner
' Datenbank ausgelesen(siehe auch "MailLibrary")!

'we use the GetNth method since the resulting collection is an IDTable
   For x = 1 To collection.Count
      Set note = collection.GetNthDocument(x)
      SendToNames(counter) = GetMailAddress
      SendToNachname(counter) = GetNachname
      SendToBriefanrede(counter) = GetBriefanrede
      counter = counter + 1
      
   Next

'hier wird eine Vorlage aus einer Liste, welche sich in meiner Maildatenbank befindet  geöffnet
   
   vMailInfo = Evaluate( "@MailDbName" )
   Set newcollection = ws.Picklistcollection(PICKLIST_CUSTOM, False, vMailInfo(0), vMailInfo(1), "Vorlage", "Vorlage wählen", "Wählen Sie bitte eine Vorlage für das neue Memo.")
   Set mailnote = newcollection.getfirstdocument
   
   
   
'in der ersten Bodyzeile steht ein Wort, welches durch die Anrede ersetzt wird.
   
   For y=0 To counter-1   
      Set body = mailnote.GetFirstItem("Body")
      Set rtnav = body.CreateNavigator
      Anrede = (SendToBriefanrede(y) + " " +  SendToNachname(y) + ",")
                  rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)  
      
      Call body.BeginInsert(rtnav)
      Call body.AppendText(Anrede)   
      Call body.AddNewLine(1)
      Call body.EndInsert      
      mailnote.EnterSendTo = SendToNames(y)
      mailnote.Logo = session.GetEnvironmentString("DefaultLogo",False)
      mailnote.Principal = profile.Owner(0)
      Call ws.EditDocument(True,mailnote)
   Next
   
   
   
End Sub
--------------------------------------------------------------------------------------------------
           "MailLibrary" in ScriptBibliotheken




Option Public
%INCLUDE "lsconst.lss"


(Declarations)


onst ERROR_TITLE = "Error"
Const ERROR_MSG_2 = "Please verify that it appears correctly in your current location."
Const ERROR_MSG_1 = "Your mail file could not be opened."

Dim ws As NotesUIWorkspace
Dim session As NotesSession
Dim db As NotesDatabase
Dim maildb As NotesDatabase
Dim note As NotesDocument
Dim mailnote As NotesDocument
Dim collection As NotesDocumentCollection
Dim profile As NotesDocument
Dim SendToNames() As String
Dim SendToNachname() As String
Dim SendToBriefanrede() As String
Dim counter As Integer
Dim flag As Variant

(InstantiateVariables)

Sub InstantiateVariables
   Set ws = New NotesUIWorkspace
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set maildb = New NotesDatabase("","")
   maildb.OpenMail
   
   ' check to make sure that we got the mail file opened
   flag = maildb.Isopen
   If flag = True Then
      Set profile = maildb.GetProfileDocument("CalendarProfile")
      counter = 0
      Set collection = db.UnprocessedDocuments
   Else
      Msgbox ERROR_MSG_1 & Chr(13) & ERROR_MSG_2, MB_ICONSTOP,ERROR_TITLE
   End If
End Sub

(GetMailAdress)

Function GetMailAddress() As String
   
   GetMailAddress = note.EMail(0)
   
End Function

(GetNachname)

Function GetNachname() As String
   
   GetNachname = note.Nachname(0)
   
End Function


(GetBriefanrede)

Function GetBriefanrede() As String
   
   
   GetBriefanrede = note.Briefanrede(0)
   
   
End Function









Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln