Domino 9 und frühere Versionen > ND8: Entwicklung
LotusScript: Mailanhang auslesen
magic_halli:
Ich nochmal...
Ein Fehler tritt auf, wenn ich der Agent auf eine Mail ohne Anhang, nur mit Text, angewendet wird! Der Fehler lautet: "Falscher Datentyp in Methode ForAllInit: FROMVAR wurde gefunden. Unknown wurde erwartet". Aha?!?
Mein Code:
--- Code: ---Sub Initialize
Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
'-----Attachment extrahieren und speichern-----
Dim attachment As Variant
Dim fileCount As Integer
fileCount = 0
Set attachment = doc.GetFirstItem("Body")
If ( attachment.Type = RICHTEXT ) Then
Forall o In attachment.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
fileCount = fileCount + 1
Call o.ExtractFile( "D:\temp\" & o.Name )
Messagebox("Attachment gespeichert.")
End If
End Forall
End If
End Sub
--- Ende Code ---
Der Debugger bleibt mit der Meldung "Type Missmatch" in der Zeile stehen: Forall o In attachment.EmbeddedObjects !
Es sollen einfach alle Anlagen (Files) gespeichert werden, oder aber es soll nichts passieren. Was ist falsch?
Danke und Gruß
mde:
Hi,
du solltest prüfen ob ein Attacment vorhanden ist
Aus der Hilfe
Notes Document class
To get: notesEmbeddedObjectArray = notesDocument.EmbeddedObjects
.....
If doc.HasEmbedded Then...
Grß Michael
magic_halli:
Habs gefunden... funzt. Danke.
AndyG:
Hallo Zusammen,
ich habe das Script zum Speichern der Anlagen auch in Produktion,
habe ich es noch nicht geschafft, den Agenten so einzustellen, das er
automatisch nach Eingang von Emails am Server startet.
Derzeit starte ich das Script über einen Button im Menü.
Hier das funktionierende Script:
===============================
'Alle Anhänge aller Dokumente in einer Datenbank speichern, incl Papierkorb
%REM
Agent Anlagen speichern > DVA
Description: Comments for Agent
%END REM
Option Public
Option Declare
'---------------------------------------------------------
'Automatisches Speichern von Anlagen
'---------------------------------------------------------
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.AllDocuments
Dim i As Integer
Dim loeschen As Boolean
loeschen = True
For i = 1 To collection.Count
'Wenn das Dokument im Ordner INBOX ist, dann weiter
Set doc = collection.GetNthDocument( i )
If doc.HasEmbedded Then
Dim rtitem As Variant
Set rtitem = doc.GetFirstItem( "Body" )
Forall o In rtitem.EmbeddedObjects
If o.Type = EMBED_ATTACHMENT Then
Call o.ExtractFile( "\\server01\GROUPDATA\Datentransfer\IN\" & o.Source )
'Objekt entfenen
'Call o.Remove
'Call doc.Save( True, True )
'Call doc.Remove(loeschen)
'Doc in anderen Ordner verschieben
'Call doc.PutInFolder("Loeschen")
'Doc aus Inbox entfernen
'Call doc.RemoveFromFolder("($Inbox)")
End If
End Forall
'Doc in Papierkorb löschen
'Call doc.Remove(loeschen)
'Doc dauerhaft löschen
Call doc.RemovePermanently(True)
End If
Next
'Löschen der DocumentCollection
'Call collection.RemoveAll(loeschen)
End Sub
===============================
(Achtung: ohne Gewähr)
Nun meine Frage/n:
Kann dieses Script so wie es geschrieben ist überhaupt als Backend-Agent am Server laufen
und was muss ich genau nacheinander durchführen und einstellen damit das Funktioniert?
Ich hoffe es kann mir jemand dabei helfen, wäre echt nett!
Grüße aus München
AndyG
PS.: Lotus Notes 8.5 natürlich ;-)
pram:
Hallo Andy,
ein paar Anmerkungen von mir:
> Set doc = collection.GetNthDocument( i )
GetNthDocument ist "böse", sollte durch getFirst/getNext verwendet werden.
> Forall o In rtitem.EmbeddedObjects
Kann funktionieren, muss aber nicht. v.a. wenn das Item im Dokument ist. besser ist m.e:
--- Code: ---v = Evaluate("@attachmentNames",doc)
Forall att in v
set o = doc.GetAttachment(att)
...
--- Ende Code ---
> Call o.ExtractFile( "\\server01\GROUPDATA\Datentransfer\IN\" & o.Source )
Ein Server kann i.d.R nicht auf einen Netzwerkpfad zugreifen.
Den Agenten würde ich periodisch laufen lassen. Alle nicht verarbeiteteb Dokumente liegen in einer Ansicht. Bereits bearbeitete Mail-Dokumente würde ich mit einem Flag markieren, so dass sie aus der Ansicht herausfallen.
Gruß
Roland
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln