Subject: One way
You can try something like this.
Option Public
Sub Initialize
Print “Start GetAddresses”
Dim s As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set docCol = db.UnprocessedDocuments
Set doc = docCol.GetFirstDocument()
Dim emailaddresses As String
emailaddresses = “”
Dim first As Boolean
first = True
While Not doc Is Nothing
Dim email1 As String
Dim email2 As String
Dim email3 As String
email1 = doc.GetItemValue(“Email1”)(0)
email2 = doc.GetItemValue(“Email2”)(0)
email3 = doc.GetItemValue(“Email3”)(0)
If first Then
If email1 <> “” and email2 <> “” and email3 <> “” Then
emailaddresses = email1 & “,” & email2 & “,” & email3
first = false
ElseIf email1 <> “” And email2 <> “” And email3 = “” Then
emailaddresses = email1 & “,” & email2
first = False
ElseIf email1 <> “” And email2 = “” And email3 <> “” Then
emailaddresses = email1 & “,” & email3
first = False
ElseIf email1 = “” And email2 <> “” And email3 <> “” Then
emailaddresses = email2 & “,” & email3
first = False
ElseIf email1 <> “” And email2 = “” And email3 = “” Then
emailaddresses = email1
first = False
ElseIf email1 = “” And email2 <> “” And email3 = “” Then
emailaddresses = email2
first = False
Else
emailaddresses = email3
first = False
End If
Else
If email1 <> “” And email2 <> “” And email3 <> “” Then
emailaddresses = emailaddresses & “,” & email1 & “,” & email2 & “,” & email3
ElseIf email1 <> “” And email2 <> “” And email3 = “” Then
emailaddresses = emailaddresses & “,” & email1 & “,” & email2
ElseIf email1 <> “” And email2 = “” And email3 <> “” Then
emailaddresses = emailaddresses & “,” & email1 & “,” & email3
ElseIf email1 = “” And email2 <> “” And email3 <> “” Then
emailaddresses = emailaddresses & “,” & email2 & “,” & email3
ElseIf email1 <> “” And email2 = “” And email3 = “” Then
emailaddresses = emailaddresses & “,” & email1
ElseIf email1 = “” And email2 <> “” And email3 = “” Then
emailaddresses = emailaddresses & “,” & email2
Else
emailaddresses = emailaddresses & “,” & email3
End If
End If
Set doc = docCol.getnextdocument(doc)
Wend
Print "Original email addresses " & emailaddresses
Dim addressArray As variant
Dim uniqueAddressArray As Variant
Dim uniqueAddressArrayUnder100 As Variant
addressArray = Split(emailAddresses, “,”)
'remove dups
uniqueAddressArray = ArrayUnique(addressArray)
'limit to first 100
If UBound(uniqueAddressArray) > 100 Then
uniqueAddressArrayUnder100 = subset(uniqueAddressArray, 100)
emailaddresses = Implode(uniqueAddressArrayUnder100, “,”)
Else
emailaddresses = Implode(uniqueAddressArray, “,”)
End If
Print "Unique and first 100 email addresses " & emailaddresses
Print emailaddresses
Dim maildb As New NotesDatabase(“”,“”)
Dim maildoc As NotesDocument
Dim uiws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Call maildb.Openmail()
Set maildoc = maildb.Createdocument()
Call maildoc.Replaceitemvalue(“Form”, “Memo”)
Call maildoc.Replaceitemvalue(“BlindCopyTo”, emailaddresses)
Call uiws.Editdocument(true, maildoc)
Print “End GetAddresses”
End Sub
Function Subset(array As Variant, n As Integer) As Variant
Dim retVal As Variant
Dim i As Integer
If Not IsArray(array) Then
Subset = array
Exit Function
End If
If n = 0 Then
Subset = “”
Exit Function
End If
If Abs(n) >= (UBound(array) - LBound(array) + 1) Then
Subset = array
Exit Function
End If
If n > 0 Then
ReDim retVal(LBound(array) To (LBound(array) + n - 1)) As Variant
Else
ReDim retVal((UBound(array) - Abs(n) + 1) To UBound(array)) As Variant
End If
For i = LBound(retVal) To UBound(retVal)
retVal(i) = array(i)
Next
Subset = retVal
End Function