Общие вопросы > Разработка приложений
поле Body
K85:
Есть письмо из вне, необходимо в преставлении Все документы нажимать кнопку или в действиях выбирать агент и сохранять данное письмо в определенном месте на диске в текстовом формате. Как сохранить поле Field Name: Body Data Type: MIME Part
пытаюсь сделать так:
--- Код: --- Dim dc As NotesDocumentCollection
Set dc = db.UnprocessedDocuments
Set nd_tmp=ndc_tmp.getfirstdocument()
While Not(nd_tmp Is Nothing)
Set mime = nd_tmp.GetMIMEEntity
While Not(mime Is Nothing)
Dim new As Variant
Set mime = nd_tmp.GetMIMEEntity
new= ""
Call mime.DecodeContent
new = mime.ContentAsText
ConvertRTDoc = new
Print #ФАЙЛ%,"Body: " & new
Call mime.remove
Set nd_tmp=ndc_tmp.getfirstdocument()
Wend
Set nd_tmp=ndc_tmp.getnextdocument(nd_tmp)
Wend
--- Конец кода ---
но так добавляется в файл только информация из 1-го поля, а остальные не попадают
Как сделать правильно?
Alla Makshanova:
А если напечатать строчку
Messagebox mime.ContentAsText,, "Content as text"
что будет выведено?
K85:
если в этой части вставить:
--- Код: --- Print #ФАЙЛ%,"Body: " & new
Messagebox mime.ContentAsText,, "Content as text"
Call mime.remove
--- Конец кода ---
то This is a multi-part message in MIME format
если в эту часть:
--- Код: --- Wend
Set nd_tmp=ndc_tmp.getnextdocument(nd_tmp)
Messagebox mime.ContentAsText,, "Content as text"
Wend
--- Конец кода ---
то Object variable not set
Alla Makshanova:
Т.е. говорится, что сообщение формата MIME состоит из множества частей.
В использовании метода ContentAsText написано, что для родительского объекта в множественном объекте (mime оказался множественным) этот метод возвращает преамбулу. Наверно поэтому берется информация только из первого поля.
Если попробовать так (печатать содержимое частей множественного объекта mime)
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim mime As NotesMIMEEntity
Dim child As NotesMIMEEntity
Dim m As String
Set db = s.CurrentDatabase
s.ConvertMIME = False ' Do not convert MIME to rich text
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
While Not(doc Is Nothing)
Set mime = doc.GetMIMEEntity
If Not(mime Is Nothing) Then
If mime.ContentType = "multipart" Then
n = 1
Set child = mime.GetFirstChildEntity
While Not(child Is Nothing)
'необходимые действия, ContentAsText'
n = n + 1
Set child = child.GetNextSibling
Wend
Else ' if not multipart
Messagebox "Not multipart",, _
doc.GetItemValue("Subject")(0)
End If
Else ' if not MIME
Messagebox "Not MIME",, doc.GetItemValue("Subject")(0)
End If
Set doc = dc.GetNextDocument(doc)
Wend
s.ConvertMIME = True ' Restore conversion
End Sub
K85:
огромное спасибо! Вышло, но осталось у меня одна проблема
например, в документе есть 4 поля Body, а выводит только 3 и всего три прохода делает (смотрю в дебагере)
в строке Set mime = doc.GetMIMEEntity показывает ту, которую в итоге не выводит
в Set child = mime.GetFirstChildEntity выводит следующее поле
как можно первое тоже вывести?
Навигация
Перейти к полной версии