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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 338651
Url: https://administrator.de/forum/outlook-automation-mail-element-loeschen-338651.html
Ausgedruckt am: 28.04.2025 um 03:04 Uhr
1 Kommentar

Hi.
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.
Gibt aber genügend ähnliche VBA Beispiele dazu hier im Forum. Einfach mal die Suche anwerfen.
Gruß
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ß