早期,我发布了主题“Groovy:自动保存附件以及来自Lotus Notes的特定扩展”,但找不到任何解决方案,因此我找到了不同的vbscripts并制作了自己的。它的作品,但现在我有一个问题:字母不会删除后脚本自动保存附加。我看到错误:“所有对象必须来自同一个会话”。我会感激任何想法。
Dim Session
Dim Maildb
Dim vw
Dim doc
Dim Item
Dim x
Set Session = CreateObject("Lotus.NotesSession")
Call Session.Initialize("password")
Set Maildb = Session.GetDatabase("SERVER", "mail.nsf")
If Not Maildb.IsOpen = True Then
Call Maildb.Open
End If
Set vw = Maildb.GetView("($inbox)")
With vw
x = 0
ReDim LmailID(x)
ReDim HasAttach(x)
Set doc = .GetFirstDocument
Set Item = doc.GetFirstItem("Body")
Do
If Item.Type = RICHTEXT Then - here i try take unread message and it doesnt work
fileNames = Session.Evaluate("@AttachmentNames", doc)
For Each Filename In fileNames
If Filename <> "" Then
If Right(Filename, 3) = "bch" Then
Call doc.Save( False, True, True )
Set NotesEmbeddedObject = doc.GetAttachment(Filename)
NotesEmbeddedObject.ExtractFile ("C:\" + Filename)
Set reply = doc.CreateReplyMessage( False )
Call reply.replaceItemValue("Subject", "DONE" + subject)
Call reply.Send( False )
Set nextDoc = .GetNextDocument(doc)
Set doc = nextDoc
End If
End If
Next
End If
x = x + 1
ReDim Preserve LmailID(x)
Set doc = .GetNextDocument(doc)
Wscript.Sleep 500
Loop Until doc Is Nothing
End With
Set Session = Nothing
Set vw = Nothing
Set doc = Nothing
Set Item = Nothing
Set Maildb = Nothing
答案 0 :(得分:1)
一些提示:
在循环内部,您使用的是.GetFirstDocument
。将其移到循环外部(With vw
之外),然后在循环内使用.GetNextDocument(doc)
(正如您已经在做的那样)。
此外,您正在调用doc.Remove(True)
,然后通过引用刚刚删除的doc
实例尝试获取下一个文档。要解决此问题,您可以添加其他文档实例,例如nextDoc
,然后在删除doc
实例时将其用作临时文档:
删除doc之前:
Set nextDoc = .GetNextDocument(doc)
删除doc后:
Set doc = nextDoc