Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Strossi am 13.09.04 - 15:28:13

Titel: Serienmail aus VB6 mit Notes versenden
Beitrag von: Strossi am 13.09.04 - 15:28:13

Ich habe ein Problem! Ich möchte aus einer Listbox von VB6 alle aufgelisteten emailadressen in das Feld BlindCopyTo von Lotus Notes eintragen. Aber das funktioniert nicht. Ich kann nur max.15 Adressen speichern. Bei mehr als 15 werden alle bis auf eine gelöscht. Kann mir jemadb einen Tip geben. Wäre sehr dankbar daführ. Probiere schon einige Tage daran herum.
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Semeaphoros am 13.09.04 - 15:35:30
Gibst Du uns mal ben Code, den Du verwendest? Vielleicht können wir Dir dann eine Alternative aufzeigen.
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Strossi am 13.09.04 - 15:40:14
Hier der Code:

Listbox von VB:
For icounter = Me.lstMail.ListCount - 1 To 0 Step -1
            KundenMail = Me.lstMail.List(icounter)
            EMailadressen = EMailadressen & KundenMail & ","

Aufruf Notes:

SendNotesMail cboThema.Text, EMailadressen, (BodyTxt)


Email versenden mit Notes:
'Die Session starten
    Set Session = CreateObject("Notes.NotesSession")
        UserName = Session.UserName
        MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"
   
    'Datenbank öffnen
    Set Maildb = Session.GETDATABASE("", MailDbName)
        If Maildb.ISOPEN = False Then Maildb.OPENMAIL
     
    'Ein neues Maildokument erstellen
    Set MailDoc = Maildb.CREATEDOCUMENT
        MailDoc.Form = "MemoKDE"
        MailDoc.BlindCopyTo = Recipient
        MailDoc.Subject = Subject
        MailDoc.Body = BodyText
        MailDoc.SAVEMESSAGEONSEND = SaveIt
        'MailDoc.ReturnReceipt = "1" 'e-Mail bestätigung vom Empfänger

    'Eingebettete Objekte und Anhänge hinzufügen
    Set NewObj = CreateObject("Scripting.FileSystemObject")
    Set myFolder = NewObj.GetFolder("C:\" + k_Country)
    Set AllFiles = myFolder.Files
    Set AttachME = MailDoc.CREATERICHTEXTITEM("Attachment")
        For Each s_Files In AllFiles
            i = InStr(s_Files, ".")
            Datei = LCase(Mid(s_Files, i))
               
                If Datei = ".pdf" Then
                    Attachment = s_Files
                       
                        If Attachment <> "" Then
                            Set EmbedObj = AttachME.EMBEDOBJECT(1454, "", Attachment, "Attachment")
                        End If
                End If
       Next
    'Senden
    MailDoc.PostedDate = Now()
    MailDoc.SEND 0, Recipient
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Semeaphoros am 13.09.04 - 15:52:21
Da wird vermutlich der String zu lang :(

Versuche doch, was passiert, wenn Du statt eines einzigen Strings direkt die Lise aus der Listbox übergibst. Falls das nicht geht, würde ich im NotesDocument das Feld BindCopyTo als NotesItem erstellen und dann per AppendToTextList die einzelnen Empfänger so im Dokument eintragen.
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Strossi am 13.09.04 - 16:16:23
OK probier ich mal aus.
Danke für die Info

Gruß Strossi :-)
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Strossi am 16.09.04 - 06:30:18
Hallo leute habe es geschaft. Mehrere E-Mailadressen mit einem VB Script in das Feld  BlindCopyTo zu schreiben. Das mit NotesItem oder so war gut hat aber nicht geklappt. Hier die Lösung:

Ein dynamisches Array Dimensionieren.
Dim Emailadressen() as string

Die Anzahl der Adressen im Listenfeld zuordnen
AnZahl=Listbox1.ListCount

max.Größe des Array bestimmen
ReDim Emailadressen(Anzahl)

mit einer For schleife die Emailadressen aus der Listbox in das Array schreiben.
For i=listbox1.ListCount-1 to 0 step-1
      Lesen=listbox1.List(i)
      Emailadressen(i)=Lesen
next i

Nun das Array übergeben
z.B. MailDoc.BlindCopyTo=Emailadressen

Jetzt werden alle Emailadressen untereinander Aufgelistet.
Habs mit 147 Stück probiert funktioniert tadellos.

Danke nochmals für eure Tipps
Gruß Strossi
 ;D
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Semeaphoros am 16.09.04 - 09:29:17
Das war die andere Variante, die ich gemeint habe, allerdings sollte das ohne Umkopieren funktionieren, etwa so:

MailDoc.BlindCopyTo=listbox1.List
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: koehlerbv am 16.09.04 - 09:39:44
Da Jens der String-Variante noch nicht explizit widersprochen hat:
Und mehrere Addressaten müssen immer in einem Array stehen - sie in einem String zu verketten, wird von Notes im Backend nicht akzeptiert (bzw. nicht aufgelöst).

HTH,
Bernhard
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Strossi am 16.09.04 - 09:51:05
Das war die andere Variante, die ich gemeint habe, allerdings sollte das ohne Umkopieren funktionieren, etwa so:

MailDoc.BlindCopyTo=listbox1.List
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Semeaphoros am 16.09.04 - 09:51:33
Und je nach Implementation kommt die Listbox als Array oder als List daher, normalerweise - wie hier zu sehen - als Array
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Strossi am 16.09.04 - 09:52:27
Die Variante mit der Listbox anhängen wurde von notes nicht akzeptiert. Zumindest nicht bei mir.
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Semeaphoros am 16.09.04 - 09:59:14
Und wenn Du die Variable MailAdressen als Variant deklarierst (gibts das in VB6 ?) und so zuweisest:

MailAdressen = listbox1.List

und das dann an Notes übergibst?
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Strossi am 16.09.04 - 10:08:50
 ::) Also ich habe deinen Vorschlag gerade mal durchgeführt.
Aber da erhalte ich den Fehler: Variable nicht Optional.
Doch die Variante mit dem Array functioniert und ist sehr schnell.
Haupt sache es geht.
Gruß Strossi
Titel: Re:Serienmail aus VB6 mit Notes versenden
Beitrag von: Semeaphoros am 16.09.04 - 10:11:18
Danke fürs Testen. erweitert den Horizont :) Scheint mir aber trotzdem etwas seltsam zu sein, dass das Umkopieren erforderlich ist, aber wie Du sahgst, es funktioniert.