使用Lotuscript阅读Outlook 2016电子邮件

使用Lotuscript阅读Outlook 2016电子邮件,outlook,lotus-notes,lotusscript,Outlook,Lotus Notes,Lotusscript,我有一个Notes应用程序,它读取打开的Outlook邮箱,并为每封电子邮件创建一个文档。这对Outlook 2013很有效,但我们最近升级到了Outlook 2016。当我们试图运行该程序时,当我们试图通过OLE访问部分邮件项时,我们开始出现“自动化对象”错误。它不是一切,因为主题工作正常,但SenderEmailAddress不工作 Dim docMemo as NotesDocument Const olFInbox = 6 Set olapp = GetObject(, "Outloo

我有一个Notes应用程序,它读取打开的Outlook邮箱,并为每封电子邮件创建一个文档。这对Outlook 2013很有效,但我们最近升级到了Outlook 2016。当我们试图运行该程序时,当我们试图通过OLE访问部分邮件项时,我们开始出现“自动化对象”错误。它不是一切,因为主题工作正常,但SenderEmailAddress不工作

Dim docMemo as NotesDocument
Const olFInbox = 6

Set olapp = GetObject(, "Outlook.Application")
Set ns = olapp.getnamespace("mapi")
Set inbox = ns.GetDefaultFolder(olFInbox)
Set col = inbox.items

ForAll msg In col
    Set docMemo = New NotesDocument(db)
    If UCase(msg.SenderEmailType) = "EX" Then
        email = msg.Sender.getExchangeUser().PrimarySmtpAddress
    Else
        email = msg.SenderEmailAddress
    End If

    Call docMemo.Replaceitemvalue("Form", "Memo")
    Call docMemo.Replaceitemvalue("Subject", msg.subject)
    Call docMemo.Replaceitemvalue("Body", msg.HTMLBody)
    Call docMemo.Replaceitemvalue("From", msg.SenderName)
    Call docMemo.Replaceitemvalue("SMTPOriginator", email)
    Call docMemo.Replaceitemvalue("PostedD", msg.SentOn)
    Call docMemo.Replaceitemvalue("CBy", currentUser)

    Call docMemo.Save(true, false)

End ForAll

是否有可以设置的选项或参数阻止LotusScript读取邮件项的所有属性?

您仍然使用Outlook 32位版本吗?Notes只能处理32位…是的,我们仍在使用32位。您确定每个outlook邮件中都存在此项目/字段吗?我这样做已经有很长一段时间了,但我记得我开始在Outlook客户端中创建一个VBA宏,或多或少执行我希望LotusScript执行的操作,然后让它在调试模式下运行。查看各个字段及其数据类型我不确定我使用的是这个工具还是另一个工具,但当我遇到类似的情况时,我总是发现查看原始MAPI数据很有用。与Notes本身非常相似,MAPI对于存在哪些项(实际上是MAPI行话IIRC中的属性)是非常可预测的。我们最终放弃了这段代码并修复了另一个问题,该问题只是阻止我们使用outlook邮件规则将电子邮件重定向到mail-in数据库。无论如何,谢谢你的帮助@RichardSchwartz我会看看这个工具,以防再次出现这种情况。