testsubjektx
Goto Top

Outlook Automation Mail-Element löschen

Hallo liebe Leute von Administrator.de,

ich habe eine Frage zur Outlook Automation, und zwar: Wie lösche ich ein Mailobjekt programmatisch?

Ich entwickle mit Visual FoxPro und bisher hat eigentlich alles mehr oder minder direkt funktioniert. Ich kann auf die Mails aus der Inbox zugreifen, diese filtern nach Text in Betreff usw..

Im Prinzip gehe ich in dem Programm durch die Inbox, schaue ob Mail X einen bestimmten String im Betreff stehen hat. Wenn das so ist, wird der Body der Mail ausgelesen und danach soll die Mail gelöscht werden. Es funktioniert alles bis auf das Löschen.

Zum Thema habe ich die folgenden Links schon durchgeackert..
https://msdn.microsoft.com/de-de/library/office/ff863343.aspx
http://www.tek-tips.com/faqs.cfm?fid=3894 (vorletzter Eintrag)
http://www.aksel.com/whitepapers/OutlookAutomation.htm (Unter Abschnitt "Common Item Methods")

Der Code sieht ca. so aus:
loOutlook = Createobject("Outlook.Application")  
loNamespace = loOutlook.GetNamespace("Mapi")  
loNamespace.logon()
loInbox = loNamespace.GetDefaultFolder(6)
loDeletedItems = loNamespace.GetDefaultFolder(3)
? loInbox.Items.Count
? loDeletedItems.Items.Count

For i = 1 To loInbox.Items.Count
	If At("XYZ",loInbox.Items(i).Subject) > 0  
		bodyLength = Len(loInbox.Items(i).Body)
		If (At("HYPERLINK", loInbox.Items(i).Body) > 0)  
			* Suche nach bestimmten Strings im Body der Mail
			loInbox.Items(i).delete() 
		Endif 
	Endif 
Endfor 

In der Zeile loInbox.Items(i).delete() liegt wohl der Fehler. Kommentiere ich diese aus, wird mir eine Messagebox mit meinen Ergebnissen angezeigt. Wenn ich die Zeile wegkommentiere, erhalte ich einen OLE Error: Parameter nicht optional.

Kann mir da jemand weiterhelfen?

Grüße

Content-Key: 338651

Url: https://administrator.de/contentid/338651

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: 132895
132895 24.05.2017 aktualisiert um 11:05:26 Uhr
Goto Top
Hi.
loInbox.Items(i).delete()
Wird nicht funktionieren weil du damit die Anzahl der Items im Posteingang veränderst und nach dem Löschen des ersten Items die Variable i in der Schleife nicht mehr auf das richtige/existierende Item verweist.
Erstelle also besser eine leere Collection zu der du die passenden Mails hinzufügst und dann am Ende in der Collection auf alle MailItems die Methode Delete anwendest.
Ich entwickle mit Visual FoxPro
Kann ich nicht, arbeite nur mit VBA/Powershell via COM mit dem Outlook-Objekt deswegen kann ich dir bei der Syntax her nicht helfen.
Gibt aber genügend ähnliche VBA Beispiele dazu hier im Forum. Einfach mal die Suche anwerfen.

Gruß