Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Worn am 24.06.05 - 10:24:50

Titel: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 10:24:50
Hallo,

ich beziehe mich auf diesen Post.

http://www.atnotes.de/index.php?topic=10524.0

Dort wurde ein cooles kleines Agenten Feature beschrieben welches über ausgewählte Mails in der aktuellen DB rennt, alle Markierten Mails nach Anhängen durchsucht und diese dann in ein vorher ausgewähltes Verzeichnis löst.

Super Sache, soweit zufrieden. Ich möchte nun aber das diese Mails auch noch gelöscht werden. also habe ich hier (nur ein Auszug aus dem Script!) noch etwas eingefügt.::::

Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim docid As String
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
   
While Not (doc Is Nothing)
docid = doc.NoteID
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
del(docid)         
End If
del(docid)   
Set doc = collection.GetNextDocument(doc)
Wend
End Sub

Diese Variable docid übergibt dann die dokumentID (hab ich das richtig gemacht ?) an die Funktion DEL. Die sieht wiederum so aus:

Function del (docid As String) As String
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Set db = s.currentdatabase
   Set doc = db.GetDocumentByID(docid)
   Call doc.Remove(True)
End Function

So Das Funktioniert auch, also das Anhänge lösen. Das löschen geht nicht, nur die letze der markierten Mails die löscht er, dann kommt eine Meldung:

Function needs a valid ADT Argument.

Also da ich laie bin (nur VB und VBA Kenntnisse) kann ich irgendwie nix damit anfangen. Kann mir jemand nen Tipp geben? Ich möchte also nur das die ausgewählten Dokumente nachdem die dort enthaltenen Anhänge gelöst wurden gelöscht werden, thats all.

Ich danke sehr...


BEN


PS: Noch was, ich kann den Agenten auch nicht debuggen. Da mekert er das ich den in einem Ansichtsfenster starten soll. Habe hier in einem Beitrag auch schon gelesen das man dann mal "aus Liste der Agenten starten" oder so ähnlich auswählen soll, was bei mir aber nicht das Problem löst.
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Glombi am 24.06.05 - 10:39:33
Das übliche Problem: Du löschst doc und dann kommt
 Set doc = collection.GetNextDocument(doc)
Das hintere doc gibt es aber nicht mehr.

Kann das jemand ins Entwicklerforum verschieben?

Andreas
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Thomas Schulte am 24.06.05 - 10:46:21
Da du alle Dokument aus der Collection löschen willst ist das eine einfache Sache:
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim docid As String
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
   
While Not (doc Is Nothing)
docid = doc.NoteID
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
End If
Set doc = collection.GetNextDocument(doc)
Wend
call collection.removeall(true)      
End Sub
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 11:06:09
Hy,

Danke das ging ja schnell.

@Glombi --> Also was schlägst du vor ?
@Thomas--> Das war es leider nicht. Kommt eine Fehlermeldung

"Type Missmatch"

Trotzdem danke ich schonmal für Hilfe.

PS. Ja bitte verschieben, das sollte eingentlich nicht hier rein, war ein versehentliches Versehen  ::)
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: diali am 24.06.05 - 11:09:09
temporär das Dokument merken
Code
dim doc_temp as NotesDocument
...
While not doc is Nothing
  set doc_temp = dc.GetNextDocument(doc)
  ...
  set doc = doc_temp
Wend
...
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 11:37:25
OJE!!

Na es will nich so recht. Also ich gehe mal davon aus das dc = collection ist, quasi documentcollection.
Ich bekomme aber immer einen Type Mismatch.
Das ganze sieht jetzt so aus. Vielleicht bin ich ja Fehlerblind!

Code
 
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim doc_temp As NotesDocument
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

While Not (doc Is Nothing)
Set doc_temp = collection.GetNextDocument(doc)
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If
Set doc = doc_temp 
Wend
End Sub


 

Also was verplane ich hier die ganze Zeit?

Vielen Dank

BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: diali am 24.06.05 - 11:43:18
in welcher Zeile kommt den der Fehler?
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 11:49:49
Tja das kann ich leider nicht sagen. Ich kann nämlich nicht debuggen.
Da kommt dann immer die Meldung :

"Der Agent muss von einem Ansichtsfenster aus gestartet werden."

Ich habe schon Alle hier geschriebenen Ansätze probiert, aber ich komm nich zu dem gewünschten Ergebnis.

 ???

Also was tun, weitere Ideen  :-:

BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: koehlerbv am 24.06.05 - 11:54:01
Kann leider nur einen kurzen Blick auf den Code werfen, aber ich vermute, dass das Forall genau dann in die Hose geht, wenn gar keine EmbeddedObjects vorhanden sind.
Daher vor abfragen: If not (rtitem.EmbeddedObjects is nothing) Then ...

Wegen Debuggen: Da gab es doch gerade gestern einen Thread dazu - such den mal. Da wird beschrieben, wie man solch einen Agent debugfähig macht (Target umstellen auf "manuell aus der Liste der Agenten").

Bernhard
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 24.06.05 - 12:02:21
... ansonsten kannst du auch mit Print/MsgBox-Befehlen eine Debug-Kette aufbauen.

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 12:05:13
Hy,

ja diesen Beitrag habe ich auch schon gelesen und auch getestet, aber ich scheine einer der Pechvögel zu sein bei dem die Sachen nicht funktionieren  :-[. Ich bekomme da trotzdem noch die Meldung das der Agent in einem ....Fenster usw....

ja ich probiere das mal aus mit dem Forall. Aber es geht ja nur um ausgewählte Dokumente, und ich wähle ja nur welche aus die Anhänge haben.


BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 24.06.05 - 12:09:18
... dein Agent ist als "... auf alle markierten Dokumente einer Ansicht" deklariert. Wenn du den Agent nicht aus einer Ansicht startest, dann muß er als als "... einmalig ausführen - @Commands sind möglich" deklariert werden...

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 12:16:44
Ähh also wenn ich das einstelle dann geht nach rechtsklick auf den Agenten in der Agentenliste und dann testen ein kleines Fenster auf wo drinne steht wann der Agent gestartet wurde und wann er beendet wurde, nicht sehr informativ hehehehehe.

Ohh man die kleinsten Wünsche sind immer sooo kompliziert!

Wieso geht nicht

if i = 1 then
lösch den scheiss.
end if

 :P

BEN


Vielleicht hat ja mal jemand Zeit sich das script (link im ersten Post)
selbst zu laden und dann mal zu testen was man machen muss damit der die ausgewählten Docs dann auch löscht.

Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 24.06.05 - 12:19:58
... Wo liegt jetzt das Problem?

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 24.06.05 - 12:23:42
... in deinem Script löschst du das Dokument, bevor du auf das nächste zugreifen möchtest. Da dein Vorgänger-Doc nicht mehr existiert, kann er das Folge-Doc nicht initialisieren.

Du musst also zuerst das Folge-Doc initialisieren und das Doc löschen - dazu arbeitest du am Besten mit 2 doc-Variablen ...

Oder du durchläufst die Collection ein zweites Mal und nimmst hier nur die Löschungen vor...

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 12:35:52
Code
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim doc_temp As NotesDocument
folder = BrowseFolder ("","")
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

While Not (doc Is Nothing)
Set doc_temp = collection.GetNextDocument(doc)
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben

If Not (rtitem.EmbeddedObjects Is Nothing) Then 
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If

Set doc = doc_temp 'collection.GetNextDocument(doc)
Wend
End Sub

Das ist der Code und da kommt eine Meldung Type Mismatch.
Alles was ich will ist das dieser Agent über die markierten Documents rennt und alle Anhhänge in einen Ordner speichert, den ich ausgewählt habe. Anschließend soll er ohne zu fragen die gewählten Dokumente entfernen.

BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: diali am 24.06.05 - 12:39:21
was mich interessieren würde, warum Du nicht den Debugger benutzen und uns die Zeile mit dem Fehler mitteilen kannst?
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 24.06.05 - 12:46:21
Code
' Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim doc_temp As NotesDocument

folder = BrowseFolder ("","")
Print "Ordner: " + folder

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

While Not (doc Is Nothing)
Set doc_temp = collection.GetNextDocument(doc)
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben

If rtItem.Type = 1 Then ' # Das Feld Body kann auch als Textfeld vorliegen - dann Type mismatch-Möglichkeit

If Not (rtitem.EmbeddedObjects Is Nothing) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If ' ende der Prüfung auf Rich-Text-Feld...

End If

Set doc = doc_temp 'collection.GetNextDocument(doc)
Wend

... das könnte es pi mal daumen sein...

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 12:52:25
Danke immernoch TYPE MISSMATCH  :-:

Debugger kann ich nicht benutzen weil

a) weis ich nicht wie
b) ich muss ja dokumente auswählen die einen Anhang haben,
dazu brauche ich ja ne Ansicht
c) wenn ich in den Agenten gehe um diesen zu bearbeiten, dann
kann ich auf nem kleinen fenster welches sich öffnet ein paar sachen auswählen. Was soll ich da denn einstellen ?

- Auswahl in der Agentenliste
- Und unter Ziel ?


Thanks

BEN

Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: diali am 24.06.05 - 12:55:34
a) Menü - Datei - Extras - Debug LotusScript
b) Dein Script starten wie immer
c) nichts verändern

nach dem Start des Agenten öffnet sich der Debugger, dann auf Fortfahren und nach der Fehlermeldung steht der Debugger in der richtigen Zeile.
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 13:02:50
Aha Danke erstmal !

Er bleibt in der Zeile.

Forall o In rtitem.EmbeddedObjects

kleben! Der Code sieht so aus wie der zuletzt von ATA gepostet.

Ideen ?

Ich danke euch..


BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: diali am 24.06.05 - 13:09:36
Wenn der Fehler auftritt stehst Du im Debuger, dann kannst Du unten umschalten auf Variablen. Was steht bei rtitem rechts und ist vor dem rtitem ein +?
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 13:16:26
Sorry ich muss weg nun ich melde mich aber später wieder !

Danke soweit

BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 24.06.05 - 13:25:16
Der folgende Code funktioniert - debuggt und getestet...
Code
Sub Initialize
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim collection As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim rtitem As Variant
	Dim folder As String
	Dim doc_temp As NotesDocument
	
	folder = "C:\Temp"
	Print "Ordner: " + folder
	
	Set db = session.CurrentDatabase
	Set collection = db.UnprocessedDocuments
	Set doc = collection.GetFirstDocument
	
	While Not (doc Is Nothing)
		Set doc_temp = collection.GetNextDocument(doc)
		Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben
		
		If  Not rtitem Is Nothing And rtItem.Type = 1 Then ' # Das Feld Body kann auch als Textfeld vorliegen - dann Type mismatch-Möglichkeit
			
			If Isarray( rtitem.EmbeddedObjects ) Then
				Forall o In rtitem.EmbeddedObjects
					Call o.ExtractFile(  folder+"\"  & o.Name )
				End Forall
				Call doc.Remove(True)
			End If 
			
		End If ' ende der Prüfung auf Rich-Text-Feld...
		
		Set doc = doc_temp 'collection.GetNextDocument(doc)
	Wend
End Sub

Toni  ;D
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 24.06.05 - 18:11:47
Okay,

dann teste ich den nächsten Dienstag auch mal.
Mal sehen ob dann die Browse Folder Funktion
auch noch geht.
Ich bedanke mich aber für die rege Hilfe, das ist
echt ein tolles Forum. Ich werde dann nochmal Posten
wie es ausgegangen ist.

Allen ein schönes Wochenende.

BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 25.06.05 - 00:39:00
... ich habe die Funktion nicht nachbauen wollen - daher meine direkte Zuweisung zum Testen...

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 28.06.05 - 08:48:05
Hallo und guten Morgen,

ja es funktioniert! Super, das freut mich. Allerdings bei manchen Anhängen klappt die ganze Geschichte noch nicht.
Kann es sein das das an dem :

Set rtitem = doc.GetFirstItem( "Body" )

liegt? Ich meine wenn der Anhang irgendwie anders eingebunden ist?
Jedenfalls habe ich hier eine Mail, da ist ne PDF angehängt, und vor dem Anhang ist so eine horizontallinie. Da klappt das dann nicht, weder Anhang lösen noch löschen. Debuggen läuft da einfach durch. Ich weis nicht wie ich drauf kommen soll woran es liegt.
Noch Ideen ?

Grüße BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 28.06.05 - 09:00:20
... schwer zu sagen. Ich habe den Code auch nicht mit großen Attachments, bzw. Mehrfach-Feldern "Body" getestet. Kann sein, daß es da auch Probleme geben wird...

Am Besten damit rumspielen. Was meinst du mit senkrechtem Strich vor dem Attachment - kannst du einen Screenshot reinhängen?

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 28.06.05 - 09:06:43
Hallo :-),

ich habe das Debuggen Kapiert  ::)!
Also er spring bei diesem dokument an der Stelle:

Code
If Isarray( rtitem.EmbeddedObjects ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If 


direkt vom if zum Endif. Das heißt die Prüfung ist False. Hilft das weiter ? Sehe ich das richtig das er mit Isarray prüft ob dort mehrere Anhänge drin sind ?

Grüße BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: diali am 28.06.05 - 09:09:21
der Anhang hängt dann nicht im Feld Body sondern am Dokument.

Schau mal nach NotesDocument.EmbeddedObjects
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 28.06.05 - 09:24:24
... ich prüfe an der Stelle, ob das Feld mindestens einen Anhang hat.

Der Tip von Diali ist korrekt. Der Code sollte erweitert werden um die Dokument-Attachments...

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 28.06.05 - 09:39:17
Naja okay ich hab das verstanden, nur komm ich da nich weiter. also ich baue nun mal ein Else ein.

Code
If Isarray( rtitem.EmbeddedObjects ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)

else
Forall o In doc.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
End If

Das klappt aber nicht, da gibts wieder den berühmten Type Mismatch bei der Forall Zeile. Ich denk ich hab da noch einiges zu lernen, ich versteh zwar die Syntax aber ich kann mir dann bei nem Fehler nur schwerlich helfen.

Ideen? Was mach ich falsch?
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 28.06.05 - 11:55:17
... der Fehler erscheint, weil du das Array der Attachments nicht testest, ob es überhaupt existiert. Willst du dann auf das erste Objekt zugreifen ist es eben Type mismatch - der falsche Datentyp.
Das geschieht beim Feld mit IsArray() - ebenso benötigst du eine solche Prüfung beim Dokument

If IsArray( datadoc.EmbeddedObjects ) Then...

Toni
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 28.06.05 - 12:39:49
Okay,

hehe ich muss gestehen ich krich das nich hin.
Mein Hauptproblem ist aber das ich doc eingebe nen Punkt mache
und mit den mir angebotenen Dingen da nichts anfangen kann, leider.

Nur mal ob ich das jetzt richtig verstanden habe. Ich habe 2erlei Dokumente.

a) diese wo der Anhang im Dokument ist
B) welche wo der Anhang als Attatchment irgendwie dranängt ?

Wieso so umständlich, wo is da der Sinn?

Also egal ich muss nun noch diese Dokumente behandeln welche eben nen Attatchment haben. Nur  :-: welche Arrays prüfen, auf was ?
Lotus Script bringt mich im Gegensatz zu VB zur Verzweiflung :-).

Naja es ist wahrscheinlich simpel, aber ich habe auch keine Hilfe Funktion und nix. Hab mein LN über Citrix.

So  long

Grüße

BEN
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 28.06.05 - 12:47:42
... nur die Ruhe bewahren...

Es gibt 2 Möglichkeiten, wie ein Attachment in einem Dokument eingetragen sein kann:
1. In einem Rich-Text-Feld => i.d.R. "Body"
2. Direkt in einem Dokument ohne Feld-Bezug - dann erscheint das Attachment als Symbol am Fuß des Dokumentes

ABER: Nicht alles was nach Attachment aussieht ist auch ein Attachment zum Lösen. So kann zum Beispiel in einem Newsletter ( Beispiel Alsi-Newsletter ) in der Ansicht zur Mail eine Büroklammer zu sehen sein - was auf ein Attachment hinweist - aber keines ist - es handelt sich hier nicht um Dateianhänge im klassischen Sinn - die kannst so also nicht lösen - und solche Fälle müssen eben abgefangen werden - dazu die Prüfungen mit IsArray()

Ich wollte dir Hilfestellung geben, aber nicht den gesamten Code liefern - versuch dich nochmal - zur Not stehe ich dir weiterhin bei...

Toni

Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 28.06.05 - 13:26:33
Ok,

ich kann mein Problem nun genauer eingrenzen.
Ich weis nicht wie das Array für die Attachments heißt.
Also genauergesagt:

Code
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben

Hier habe ich ja mein BODY - Teil.

Den entsprechenden Teil der quasi dann nicht im body sucht sondern im/am Dokument ist mir nicht bekannt.

Wenn ich :


Code
If Isarray( doc.EmbeddedObjects) Then
Forall o  In doc.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If

In das else einfüge dann mekert er schon wenn ich speichern will das das o nicht der geliche Datentyp wäre wie das doc.emb...

Ich habe mal geschaut, der Anhang der nicht funktioniert ist einer den ich lösen kann. Aber ich denke der ist nicht im Body sondern wie gesagt am Dokument oder so :-)?

Also wie frage ich nun :

wenn Dokument.HastDuAnhänge = True dann
Für jeden Anhang in doc
speicherAnhang(ort)
weiter
doc.AbInDenMüll


So einfach klingt das hehehe aber is zum Haareausreissen!!

Ben
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: ata am 28.06.05 - 13:33:05
... so lang du noch Haare hast geht dir auf jeden Fall nicht der Humor aus  ;D ;D ;D

Das Array heißt "EmbeddedObjects"
Code
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim rtitem As Variant
Dim folder As String
Dim doc_temp As NotesDocument

folder = "C:\Temp"
Print "Ordner: " + folder

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

While Not (doc Is Nothing)
Set doc_temp = collection.GetNextDocument(doc)
Set rtitem = doc.GetFirstItem( "Body" ) 'Hier das entsprechende RT-Feld angeben

If  Not rtitem Is Nothing And rtItem.Type = 1 Then ' # Das Feld Body kann auch als Textfeld vorliegen - dann Type mismatch-Möglichkeit

If Isarray( rtitem.EmbeddedObjects ) Then
Forall o In rtitem.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If

Else

If Isarray( doc.EmbeddedObjects ) Then
Forall o In doc.EmbeddedObjects
Call o.ExtractFile(  folder+"\"  & o.Name )
End Forall
Call doc.Remove(True)
End If

End If ' ende der Prüfung auf Attachments...

Set doc = doc_temp 'collection.GetNextDocument(doc)
Wend
End Sub
Titel: Re: Anhänge gewählter Mails lösen & Löschen ?
Beitrag von: Worn am 28.06.05 - 14:26:13
Hmm genauso hatte ich das das klappte nicht.
Aber ich habs geschafft. Ich denke nach dem Motto:

Warum einfach wenn es auch kompliziert geht.

Hier mein Code der im Else Bereich steht:

Code
If  Not rtitem2 Is Nothing And rtItem2.Type = 1084 Then
If Isarray( rtitem2.values) Then
Forall o  In rtitem2.values
name1 = o
Set anhang = doc.GetAttachment(o)
Call anhang.ExtractFile(  folder+"\"  & o )
End Forall
Call doc.Remove(True)
End If

Dazu muss ich noch sagen das ritem2 =
Set rtitem2 = doc.GetFirstItem("$file")

---ist!


Letztlich wäre nun noch die Frage zu klären ob der Type 1084 bei Anhängen die am Dokument hängen immer so ist?

Ich danke allen die mir geholfen haben.

Noch eine Idee zu 1084 ?

BEN