Autor Thema: Anhänge gewählter Mails lösen & Löschen ?  (Gelesen 17976 mal)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #20 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
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #21 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 +?
Gruß
Dirk

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #22 am: 24.06.05 - 13:16:26 »
Sorry ich muss weg nun ich melde mich aber später wieder !

Danke soweit

BEN
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #23 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
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #24 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
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #25 am: 25.06.05 - 00:39:00 »
... ich habe die Funktion nicht nachbauen wollen - daher meine direkte Zuweisung zum Testen...

Toni
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #26 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
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #27 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
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #28 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
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #29 am: 28.06.05 - 09:09:21 »
der Anhang hängt dann nicht im Feld Body sondern am Dokument.

Schau mal nach NotesDocument.EmbeddedObjects
Gruß
Dirk

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #30 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
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #31 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?
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #32 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
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #33 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
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #34 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

Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #35 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
Wer für alles offen ist der kann ja nich ganz dicht sein!

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #36 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
Grüßle Toni :)

Offline Worn

  • Aktives Mitglied
  • ***
  • Beiträge: 171
  • Geschlecht: Männlich
Re: Anhänge gewählter Mails lösen & Löschen ?
« Antwort #37 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
Wer für alles offen ist der kann ja nich ganz dicht sein!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz