VBScript:Lotus Notes自动保存具有特定扩展名的附件

时间:2012-12-12 17:50:58

标签: vbscript lotus attachment autosave

早期,我发布了主题“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 

1 个答案:

答案 0 :(得分:1)

一些提示: 在循环内部,您使用的是.GetFirstDocument。将其移到循环外部(With vw之外),然后在循环内使用.GetNextDocument(doc)(正如您已经在做的那样)。

此外,您正在调用doc.Remove(True),然后通过引用刚刚删除的doc实例尝试获取下一个文档。要解决此问题,您可以添加其他文档实例,例如nextDoc,然后在删除doc实例时将其用作临时文档:

删除doc之前:

Set nextDoc = .GetNextDocument(doc)

删除doc后:

Set doc = nextDoc