Проблема извлечения аттача из письма

  • Автор темы tired
  • Дата начала
T

tired

#1
Я в лотусе новичек, мне поставили простенькую задачку, извлекать вложенные архивы из приходящих писем, в хелпе нашел похожий скрипт

Dim doc As NotesDocument
Dim rtitem As Variant
Dim fileCount As Integer
Const MAX = 100
fileCount = 0

Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) _
And ( o.FileSize > MAX ) Then
fileCount = fileCount + 1
Call o.ExtractFile _
( "c:\reports\newfile" & Cstr(fileCount) )
Call o.Remove
Call doc.Save( True, True )
End If
End Forall
End If

Когда пытаюсь его проверить на выполнение появляется ошибка Object variable not set
Как правильно объявить Set doc= ???
 
F

Fossil Code

#2
См. Accessing documents in LotusScript classes в хепле дизайнера.
 

RAJ

Well-known member
17.01.2007
440
0
#3
1. Получить коллекцию документов
2. В цикле обработать каждый документ в отдельности

Схема следующая:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set dc = db.UnporoccesedDocuments 'документы для обработки, переданные агенту
Set doc = dc.GetFirstDocument

while not(doc Is Nothing)
'ваш код по обработке документа doc
....................
Set doc = dc.GetNextDocument(doc)
wend
 
J

johny

#4
функция по сохранению файлов из писем


Sub myFileSave( doc As NotesDocument, folder As String, flag As Integer )
Dim strFile As String
Dim rtitem As Variant
Dim direct As Variant
Dim str_1 As String
Dim str_2 As String
Dim itemType As Integer
Dim fileName As String
Set wrdObj = CreateObject("Word.Application") 'создание
If Isnull(wrdObj) Then ' если не удалось получить объект - завершение процедуры
Messagebox "Не удается создать 'документ'."
Exit Sub
End If
wrdObj.Documents.Add
str_1 = Cstr(doc.PostedDate( 0 )) + "_" + Cstr(doc.SendTo(0)) + "_" + Cstr(doc.Subject( 0 ))
str_2= Replace (str_1 , ":", "_")
fileName= Replace (str_2, "/", "_") & ".doc"
Set rtitem = doc.GetFirstItem("Body")
Set wordDoc = wrdObj.ActiveDocument
Set table1= wordDoc.Tables.Add(wordDoc.Range(0,0),4,1)
table1.cell(1,1).Range.Text = "Текст письма"
table1.cell(2,1).Range.Text = rtitem.Text
table1.cell(3,1).Range.Text = "Прикрепленные файлы"
If doc.HasEmbedded Then
Forall o In rtitem.EmbeddedObjects
If flag=0 Then
Mkdir folder & "\" & "attachment"
End If
strFile = folder & "\" & "attachment" & "\"& o.name' & ".tt"
Call o.ExtractFile(strFile )
Call table1.cell(4,1).Range.InlineShapes.AddOLEObject( "", strFile ,False,True, "" , 0,o.Name)
End Forall
End If
wrdObj.ChangeFileOpenDirectory (folder & "\")
Call wordDoc.SaveAs( fileName, wdFormatDocument, False, "", True, "", False, False, False, False, False )
wrdObj.Documents(fileName).close(wdSaveChanges)
Call wrdObj.Quit()
End Sub
 
I

IsAvailable

#6
Из почтовой базы агентом извлекаю(пытаюсь) файлы таким образом:

Код:
Set rtitem = doc.GetFirstItem("Body")
Forall obj In rtitem.EmbeddedObjects
If Isobject(obj) And Not obj Is Nothing Then
If obj.Type = EMBED_ATTACHMENT Then
obj.ExtractFile(path & obj.source)
End If
End If
End Forall
где doc - это текущее открытое письмо (NotesDocument)
path - строка типа "<диск>:\<папка>\"

Собственно, проблем нет, если письма нешифрованные. Если шифрованные, то вываливается сообщение: You must supply the bulk decription key in order to extract this file object
Агент запускается по нажатию на кнопке в письме, от имени владельца базы.

В чем может быть загвоздка?