0

我有 3 个(或更多)部门。每个部门都有电子邮件收件人。例如:

A部:约翰,玛丽。B部门:约翰,克里斯。C部门:约翰。

该字段(文本列表)以 Dept 的形式称为 EmailRecipient。目前我已经设法向每个部门的每个收件人发送电子邮件。但是我只需要给 John 发送一次电子邮件,因为电子邮件的内容是相同的。我目前在我的测试代理中所做的如下:

Dim view As NotesView, doc As NotesDocument
Set view=db.Getview("Department")
Set doc=view.Getfirstdocument()
Do While Not doc Is Nothing
    ForAll x In doc.EmailRecipient
        Set doc=db.Createdocument()
        doc.form="Memo"
        doc.subject="test"
        Call doc.Send(True, x)
    End ForAll
Loop

如果我已经向他发送了电子邮件,如何在下一个部门的 EmailRecipient 数组中跳过 John?

4

1 回答 1

2

使用列表。如果您不了解 LotusScript 中的 List 数据类型,请在 Domino Designer 帮助数据库中查找“Working with Lists”。

在循环之外,您将创建一个列表:

dim alreadySent List as String

在您的 forall 中,您会将每个名称添加到列表中:

alreadySent(x) = departmentName

最后,您将调用 doc.Send 放在一个检查列表的 if 语句中:

if isElement(alreadySent(x)) = True then
   ' print "Skipping " + x + " because the message was already to this recipient sent for department " + alreadySent(x) 
   Call doc.send(True,x)
end if

请注意,我在这里即兴创作了一点。我假设您的部门表单有一个名称字段。我知道您实际上并没有阅读它,但是您可以很容易地添加它。您实际上不必这样做,因为您可以轻松地声明“已发送列表为布尔值”并分配已经发送(x)= True,但是通过使用字符串列表并为每个收件人分配部门名称,您可以跟踪哪个部门您已经在其中看到了该用户。我包含了注释掉的打印语句以显示它可能是如何有用的。

于 2012-09-29T00:35:52.913 回答