Spam per Makro löschen
#1
Hallo zusammen,

ich habe mal vor längerer Zeit nachfolgendes Makro im Web gefunden und nutze es um mit einem Klick den Inhalt des Spamordner zu löschen. Allerdings wird nur im Hauptkonto gelöscht, die Konten "Hotmail bzw. Live" und "Gmail" bleiben unberühert.

Nun meine Frage: Wie muss ich den Code verändern, damit auch die beiden anderen Konten mit einbezogen werden.

Code:
Sub JunkMails_loeschen()
    Dim myNameSpace As NameSpace 'ein NameSpace Objekt halt
    Dim JunkFolder As MAPIFolder 'Junk-Ordner
    Dim JunkMail As MailItem 'Objekt im Junk-Ordner
    Dim a As Long 'Anzahl der Elemente
    Dim EntryID As String 'Element-ID
    Dim DeleteItem As Object 'Namespace bestimmen
    
    Set myNameSpace = Application.GetNamespace("MAPI")        'JunkFolder bestimmen
    Set JunkFolder = myNameSpace.GetDefaultFolder(6).Parent.Folders("Junk-E-Mail")         'Anzahl der Elemente im JunkFolder bestimmen
    a = 0
    Do While JunkFolder.Items.Count > 0
        Set JunkMail = JunkFolder.Items(1)
        EntryID = JunkMail.EntryID          'Element-ID speichern
        JunkMail.Delete                           'Element löschen
        'Anhand der Element-ID werden die Elemente permanent gelöscht
        Set DeleteItem = myNameSpace.Session.GetItemFromID(EntryID)
        DeleteItem.Delete                       'Element (ID) permanent löschen
        a = a + 1
    Loop
    Set myNameSpace = Nothing
    Set JunkFolder = Nothing
    Set JunkMail = Nothing
    Set DeleteItem = Nothing
'    MsgBox "Es wurden " & a & " Elemente gelöscht"
End Sub

Danke schon mal im Voraus!!!
Top
#2
Hallo Bernie,

erst mal nur ein Ansatz.

Den Junkfolder eines beliebigen Kontos bekommst Du z.B. so:
Code:
Dim JunkFolder As Outlook.Folder
    Set JunkFolder = Outlook.Session.Folders(1).Folders("Junk-E-Mail")
Die 1 im code entspricht der Index- bzw. Item-Nummer des entsprechenden Outlook-Kontos. Wenn Du z.B. 3 Konten hast, könntest Du eine Schleife über die 3 Konten - also 1 bis 3 - drehen und die einzelnen Junkfolder abklappern.

Eventuell kannst Du aber auch ohne VBA über die Einstellungen oder regeln oder Archivieren das Leeren automatisieren. Du kannst, wenn Du nicht nachschauen willst, glaube auch gleich löschen lassen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo!

Mit dem folgenden Code werden alle Junk-E-Mail-Ordner geleert. Die Emails werden sofort gelöscht und nicht in "Gelöschte Elemente" abgelegt.

PHP-Code:
Public Sub ClearJunkMailFolders()

Dim olApp           As Outlook.Application
Dim olName          
As Outlook.NameSpace
Dim olFolder        As Outlook.MAPIFolder
Dim olItems         
As Outlook.Items

Dim olFoldersCount  
As Long
Dim olItemsCount    
As Long


Set olApp 
Application

  With olApp
     Set olName 
= .GetNamespace("MAPI")
       For 
olFoldersCount 1 To .Session.Accounts.Count
           Set olFolder 
olName.Session.Folders(.Session.Accounts.Item(olFoldersCount).DisplayName).Folders("Junk-E-Mail")
               
Set Application.ActiveExplorer.CurrentFolder olFolder
                   Set olItems 
olFolder.Items
                     
For olItemsCount olItems.Count To 1 Step -1
                         olItems
.Remove olItemsCount
                     Next olItemsCount
       Next olFoldersCount
  End With

End Sub 
Gruß, René
Top
#4
Hallo André, hallo René,

war beruflich etwas verhindert mich zu melden, sorry!

@ René
bekomme bei deinem Code leider eine Fehlermeldung und zwar in dieser Zeile..
Code:
Set olFolder = olName.Session.Folders(.Session.Accounts.Item(olFoldersCount).DisplayName).Folders("Junk-E-Mail")

Mit dem Hinweis ein Objekt wurde nicht gefunden.

Was muss ich ändern?
Top
#5
Hi Bernie,

Code läuft bei mir unter Outlook 2007 sauber durch.

Welche Verweise sind bei dir gesetzt?
Bei mir 4:
VBA
MS Outlook 12.0 Object Library
OLE Automation
MS Office 12.0 Object Library
Mit freundlichen Grüßen  :)
Michael
Top
#6
1. Welche Fehlermeldung genau?
2. Heisst der Ordner auch korrekt "Junk-E-Mail"? Wenn nicht dann anpassen.
Top
#7
Hi René,

ein Bild sagt mehr als tausend Worte ...

           

...ich hoffe, du kannst damit etwas anfangen.
Top
#8
Verweise sind in Ordnung, auch die Namen der Ordner. Scheint so als könne Dein Outlook nicht auf die "Session.Accounst" zugreifen. Das könnte ich aber nur herausfinden wenn ich auf Deinem Rechner Zugriff hätte (per TeamViewer). Allerdings bin ich bis 12.10. im Urlaub.
Top
#9
Hi René,

kein Problem, komme aber gesund aus dem Urlaub, gelle Thumbsupsmileyanim
Top
#10
Hallo René,

na, Lust dich meinem Thema zu widmen?

Übrigens, wie war der Urlaub?
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste