【问题标题】:LotusScript agent to send mail to multiple recipients from csv fileLotusScript 代理从 csv 文件向多个收件人发送邮件
【发布时间】:2022-01-17 08:50:19
【问题描述】:

我需要 LotusScript 代理操作按钮来向多个收件人发送电子邮件,这些收件人的邮件地址将从 csv 或 excel 文件中读取。我必须向几百个收件人发送相同的邮件,从 excel 文件发送邮件比单独键入或复制每个邮件要容易得多。我在 HCL 站点上找到了“Send”方法并使用静态数组示例实现:

Sub Click(Source As Button)
 Dim s As NotesSession
 Dim db As NotesDatabase
 Dim doc As NotesDocument
 Dim rtitem as NotesRichTextItem
 Set s = New NotesSession
 Set db = s.CurrentDatabase
 Set doc = New NotesDocument(db)

 '----------------------------------------------------------------------
 ' Build static list of email addresses
 '----------------------------------------------------------------------
 Dim addresses (1 to 3) as String
 addresses(1) = "EMAIL"
 addresses(2) = "EMAIL"
 addresses(3) = "EMAIL"

 '----------------------------------------------------------------------
 ' Create and send email message
 '----------------------------------------------------------------------
 doc.Form = "Memo"
 doc.SendTo = addresses
 doc.Subject = "This is the message subject"
 Set rtitem = New NotesRichTextItem(doc, "Body")
 Call rtitem.AddNewLine(1)
 Call rtitem.AppendText("The body of the email message.")
 doc.Send (True)
 Msgbox "Sample email sent"
End Sub 

此操作按钮应向 3 个收件人或我手动输入代码的多个收件人发送电子邮件,但有没有办法从 csv 或 excel 文件向收件人发送电子邮件?

【问题讨论】:

    标签: excel email lotus-notes lotus-domino lotusscript


    【解决方案1】:

    是的,当然有办法。

    要从 CSV 文件中读取,您可以使用 NotesStream class 从文件中读取数据。或者您可以使用Open statement 和旧的类似BASIC 的file operations 从文件中读取数据。当然,无论哪种方式,您都将编写一个 CSV 文件解析器。如果您搜索它们,您可能会找到一些示例,但实际上并没有那么难。

    要在 LotusScript 中读取 Excel 工作表,您需要调用 Excel API classes。这是我发现的一个例子:link。我敢肯定还有很多其他人。但是,许多人会以另一种方式来执行此操作,即编写在 Excel 中运行并调用 Lotus 类的 VBA 代码。在 StackOverflow 上搜索“从 Excel VBA 发送 Lotus Notes 电子邮件”肯定会出现一些示例。也可以编写独立运行并同时使用 Excel 类和 Notes 类的 VBScript 代码,毫无疑问,您也可以找到一些这样的示例。

    【讨论】:

    • 或者你在 Notes 中创建一个邮件组...
    • @Richard Schwartz - 我找到了许多使用 VB 代码和 Excel 宏的解决方案。但我更喜欢通过操作按钮直接从 Notes 运行代理。这种方式更复杂,需要扎实的 LotusScript 知识,而我的情况并非如此。正如你所难过的那样,这种方式需要使用 NotesStream 类和/或 Open Statement。我在这里和互联网上进行了搜索,但没有找到任何类似的解决方案,可以直接从存储在本地磁盘上的 excel 文件中导入收件人。
    • 您需要做的第一件事是确定是从 CSV 还是从实际的 Excel 工作表文件读取收件人。然后,您需要编写一个名为 getRecipientsFromCSV 或 getRecipientsFromExcel 的函数。然后,您需要找到示例代码来帮助您入门。如果您决定从 CSV 读取数据,请查找一些从文本文件读取的 LotusScript 示例,并尝试找出如何将类似代码放入您的 getRecipientsFromCSV 函数中。如果您有问题,请回到 StackOverflow 并就您在新代码中遇到的问题提出一个新的具体问题。
    • 如果您决定从 Excel 中读取,则搜索“从 LotusScript 访问 Excel”。你会发现一些很好的例子。弄清楚该代码如何读取单元格值并在 getRecipientsFromExcel 函数中编写类似的代码。如果您遇到问题,请回到 StackOverflow 并就您在新代码中遇到的具体问题提出一个新的具体问题。
    • Julian Robichaux 用 LotusScript 编写了一个有用的 CSV 阅读器。请参阅nsftools.com/blog/blog-03-2006.htm#03-02-06 的示例。您应该将他的 CSVReader 类放在脚本库中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2012-05-18
    • 2012-11-30
    • 2017-12-05
    • 2015-08-29
    相关资源
    最近更新 更多