Autor Thema: Serien-Mail per Script  (Gelesen 4059 mal)

Offline JohnSilver

  • Frischling
  • *
  • Beiträge: 8
  • Ich liebe dieses Forum!
Serien-Mail per Script
« am: 23.08.03 - 22:25:35 »
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



Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Serien-Mail per Script
« Antwort #1 am: 25.08.03 - 09:57:00 »
... 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

SendToNames(counter)

... sollte glaube ich...

SendToNames(x)

... heißen...

ata
Grüßle Toni :)

Offline JohnSilver

  • Frischling
  • *
  • Beiträge: 8
  • Ich liebe dieses Forum!
Re:Serien-Mail per Script
« Antwort #2 am: 11.09.03 - 22:50:20 »
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

Offline Micha

  • Aktives Mitglied
  • ***
  • Beiträge: 106
  • Geschlecht: Männlich
  • Not(es) macht erfinderisch
Re:Serien-Mail per Script
« Antwort #3 am: 12.09.03 - 10:02:18 »
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


 
 
     
5.0.5 Designer und Client
Win NT 4.0

Offline JohnSilver

  • Frischling
  • *
  • Beiträge: 8
  • Ich liebe dieses Forum!
Re:Serien-Mail per Script
« Antwort #4 am: 12.09.03 - 18:44:34 »
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










Offline JohnSilver

  • Frischling
  • *
  • Beiträge: 8
  • Ich liebe dieses Forum!
Re:Serien-Mail per Script
« Antwort #5 am: 30.09.03 - 21:17:02 »
 ??? ???

Hallo,

das Problem mit der Anrede wäre gelöst, wobei jetzt ein neues Problem
vorliegt. In jedem neu erzeugten Mail wird der "text" aus der Vorlage
direkt hinter die Anrede gestellt. Wie kann ich den "text" aus der Vorlage
zwei Zeilen unter die Anrede stellen? Oder muß die Anrede(String) und der Text(String)wieder in RichText umgewandelt werden, damit AppendNewLine
einsetzbar ist?

Bin für jede Hilfe sehr dankbar.

Besten Dank im voraus.


Dim text As String  


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

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Serien-Mail per Script
« Antwort #6 am: 30.09.03 - 21:31:12 »
Wie wäre es mit
Anrede = Anrede & chr$ (10) & chr$ (10) & Text ?

Statt "+" sollte man in LS sowieso "&" verwenden - aber das hat mit diesem Problem nix zu tun.

Bernhard

Offline JohnSilver

  • Frischling
  • *
  • Beiträge: 8
  • Ich liebe dieses Forum!
Re:Serien-Mail per Script
« Antwort #7 am: 03.10.03 - 10:57:16 »
Hallo Bernhard,

vielen vielen Dank,  es funktioniert!!! :) :) :)

noch eine letzte Frage, wie kann ich formatierten Text aus der Vorlage
übernehemen, der Text wird immer unformatiert aus der Vorlage übernommen?

Michael

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Serien-Mail per Script
« Antwort #8 am: 03.10.03 - 13:39:17 »
Gib der Methode AppendRTItem der NotesRichTextItem-Klasse eine Chance.
Du solltest aber bedenken, daß Mails beim Versand via Internet meist alle Formatierungen verlieren - ein reines Text-Mail kommt also immer am saubersten an.

HTH,
Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz