Общие вопросы > Разработка приложений

поле Body

(1/3) > >>

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 выводит следующее поле

как можно первое тоже вывести?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии