Das Notes Forum

Lotus Notes / Domino Sonstiges => OLE/COM-Programmierung => Thema gestartet von: InfoStudent86 am 25.05.10 - 15:03:22



Titel: COM (C# / VBA) - MIME Export
Beitrag von: InfoStudent86 am 25.05.10 - 15:03:22
Hallo,

ich versuche seit Tagen den Inhalt eines Body Feldes Formatiert aus Lotus Notes auszulesen. Dabei geht es mir insbesondere darum, das der Text genauso wie z.B. in einer Mail aussieht.  (Tabellen, Inline-Attachments).

Datz habe ich versucht mit Hilfe der COM API ein NotesDokument in MIME zu Konvertieren. Was leider total gescheitert ist. Ich komme an die MIME Entity nicht heran. Sie ist NULL.


Villeicht habe ich auch einen falschen Ansatz gewählt. Ich bin für jeden Tipp Dankbar.


Code:
 public class NotesRtfExport
    {
        const string cNotesConvertFormName  = "CONVERT_FORM"    ;
        const string cNotesConvertFieldName = "CONVERT_FIELD"   ;

        Domino.NotesSession  nSession   = null  ;
        Domino.NotesDocument nDoc       = null  ;

        public NotesRtfExport(Domino.NotesSession nSession, Domino.NotesDocument nDoc)
        {
            this.nSession   = nSession  ;
            this.nDoc       = nDoc      ;
        }

        public string GetRtfCode(string nItemName)
        {
            bool                            nCurrentMimeEntity    = false  ;   // zwischenspeichern der aktuellen MimeKonfig
            Domino.NotesRichTextItem        nRtfItem              = null   ;

            Domino.NotesDatabase            nConvertDb            = null   ;
            Domino.NotesDocument            nConvertDoc           = null   ;
            Domino.NotesRichTextItem        nConvertRtfItem       = null   ;
            Domino.NotesItem                nConvertMimeItem      = null   ;
            Domino.NotesMIMEEntity          nConvertMimeEntity    = null   ;
            string                          nConvertDocId         = ""     ;


            try
            {
                nRtfItem = (Domino.NotesRichTextItem)nDoc.GetFirstItem(nItemName);

                if (nRtfItem != null)
                {
                    nCurrentMimeEntity = nSession.ConvertMime;
                    nSession.ConvertMime = true;

                    nConvertDb = nSession.GetDatabase(@"xxxxxxxxxxxx", @"mail\administ.nsf", true);

                    nConvertDoc = nConvertDb.CreateDocument();
                    nConvertDoc.ReplaceItemValue("Form", cNotesConvertFormName);
                    nConvertRtfItem = nConvertDoc.CreateRichTextItem(cNotesConvertFieldName);
                    nConvertRtfItem.AppendRTItem(nRtfItem);
                    nConvertDoc.Save(true, false, true);
                    nConvertDocId = nConvertDoc.UniversalID;

                    nConvertDoc = null;

                    nSession.ConvertMime = false;
                    nConvertDoc = nConvertDb.GetDocumentByUNID(nConvertDocId);

                    if (nConvertDoc != null)
                    {
                        nConvertMimeItem = nConvertDoc.GetFirstItem(cNotesConvertFieldName);
                        nConvertMimeEntity = nConvertMimeItem.GetMIMEEntity();  // ist NULL und ich kann nicht weiterarbeiten :-(
                    }

                }
            }
            catch
            {
            }
            
            return "";
        }
    }