Domino 9 und frühere Versionen > ND7: Entwicklung

Mailinhalt als XML-Datei speichern

(1/4) > >>

Jörg K.:
Hallo,
ich hab hier schon eine Menge entdeckt aber leider nicht wirklich das was ich haben möchte.
Gestern hab ich noch versucht heraus zu finden wie man einen Anhang speichert, hab dann was gefunden:
Mail + Attachment im Filesystem speichern
Das ist aber viel zu umständlich und hilft mir auch nicht wirklich weiter!
Der Agent soll in der Maildatenbank ausgeführt werden, die auf dem Server liegt, er kann bei Eingang einer Mail gestartet werden.
Er soll dann den Inhalt der Mail Hier wohl auch Body genannt, als XML-Datei speichern.
Der Pfad auf dem Server steht fest und muss nicht abgefragt werden: C:\Freigaben\anmeldung\
Der Dateiname soll die NoteID der Mail sein, was wohl Dopplungen vermeidet.
Der Dateityp wäre dann .XML
Gibt es hier nicht schon sowas, das meinetwegen der Mailinhalt in eine TXT geschrieben wird?

Vielen Dank im Voraus

Gruß Jörg

m3:

--- Zitat von: Jörg K. am 10.09.08 - 17:22:54 ---Inhalt der Mail Hier wohl auch Body genannt,
--- Ende Zitat ---
Nicht unbedingt. SMTP/MIME Mails können anders aussehen. Eine Notes-Mail kann auch mehrere Body-Items haben, usw. Das ist nicht ganz trivial.


--- Zitat ---Gibt es hier nicht schon sowas, das meinetwegen der Mailinhalt in eine TXT geschrieben wird?
--- Ende Zitat ---
Nein.

Sonst konkrete Fragen?

P.S.: Die OpenNTF Mail Experience Schablone hat eine Option "als RFC822-Mail (.eml) weiterleiten". Ev. kannst Du den Code weiterverwenden.

TRO:

--- Zitat von: Jörg K. am 10.09.08 - 17:22:54 ---Der Dateiname soll die NoteID der Mail sein, was wohl Dopplungen vermeidet.

--- Ende Zitat ---

Nein die NoteID ist nur jeweils zu einem definierten Zeitpunkt in einer Datenbank unique. Nach einem Compact können die NoteIDs ganz anders aussehen.
Was wirklich "unique" ist, das ist die DocumentUniqueID (=UNID).

Thomas

koehlerbv:

--- Zitat von: TRO am 10.09.08 - 21:39:36 ---Nein die NoteID ist nur jeweils zu einem definierten Zeitpunkt in einer Datenbank unique. Nach einem Compact können die NoteIDs ganz anders aussehen.
--- Ende Zitat ---

Hast Du dafür Belege? Wenn ein defektes Dokument aussortiert wird und durch Replikation wieder aufgenommen wird - okay. Aber sonst?

Bernhard

Jörg K.:
Gut konkrete Frage!
Aber erst mal schön zu hören das es nicht so trivial ist!
Muss ich erst eine Funktion Programmieren, die die XML-Datei speichert, in der dann auch das mit dem Pfad und Namen der Datei direkt schon feststeht, egal ob der nun die NoteID oder die DocumentUniqueID den Namen der Datei ergibt, wichtig ist nur eindeutiger Name .XML! Vermutlich wird  der Inhalt der Mail in einer extra Funktion extrahiert und dann irgenDwie an die Speicherfunktion weiter gegeben!

Das "Initialize" könnte so aussehen, wenn der Agent periodisch in der Datenbank läuft und eventuell mehrere Mails umwandeln muss:

Sub Initialize
   
   ' Erst kommt die Fehlerbehandlung, hab ich jetzt aber mal weggelassen!
   
   Dim session As New NotesSession    'Soll ja auf Server laufen
   Dim vec As NotesViewEntryCollection ' Es können ja mehrere Mails eingegangen sein
   Dim ve As NotesViewEntry 'Ich will ja in den Eingang schauen
   Dim doc As NotesDocument 'Mails sind hier ja auch Dokumente, oder?
   Dim View As NotesView 'Wo, will ich denn reinschauen
   
   Set view = session.CurrentDatabase.GetView ("n_anmeldungen_offen") 'Schau doch mal in die Datenbank, in der sich der Agent befindet
   Set vec = view.AllEntries 'Und in dieser Datenbank, soll nach allen Eingängen geschaut werden
   If vec.count > 0 Then 'Wenn die Anzahl der eingegangenen Dokumente mindestens Eins ist, dann mach was
      Set ve = vec.GetFirstEntry 'nimm mal das erste Dokument im Eingang
      While ve Is Nothing = 0
         Set doc = ve.Document 'Dieses Dokument ist das Dokument was gerade im Schleifendurchlau gefunden wurde
         Call creat_xmlfile (doc)   'So  jetzt sollte man eine Funktion aufrufen, die aus dem Mailinhalt dieses Dokumentes eine
                                                                 XML-Datei macht und dieser auch nen Namen gibt und auch schon den Pfad weiß wo diese
                                                                 dann zu speichern ist
         Call doc.Save (True, True) 'Das Dokument wurde entsprechend gespeichert
         Set ve = vec.GetNextEntry   ' Jetzt kommt das nächste Dokument im Eingang dran
      Wend
   End If
   
       ' Hier dann die Fehlerbeschreibung, wenn ein Fehler auftritt, dann lösche die ganze Serverfestplatte ohne Bestätigung  >:D
   
End Sub

So solltes das schon funktionieren denk ich mal aber die Funktion create_xmlfile, die gibt es leider noch nicht und jetzt meine konkrete
Die Kommentare sollen dazu dienen ob ich das was ich mir bisher angelesen hab auch stimmt!
Frage wie müsste dies aussehen?
Ich hoffe mich dieses mal nicht all zu kompliziert ausgedrückt zu haben und freu mich wirklich über jede Hilfe  ::)
Helft mir bitte aus dem Tal der Ahnungslosen!

Gruß Jörg

@ Bernhard
ich glaube auch die NoteID, sollte als Name für die xml Datei reichen, zumal die XML-Dateien mindestens einmal täglich in eine SQL-Datenbank eingelesen, die diese nach dem Einlesen automatisch im Filesystem löscht!

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln