Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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!!!
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Antworten 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)
Antworten 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é
Antworten 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?
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Antworten 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
Antworten Top
#6
1. Welche Fehlermeldung genau?
2. Heisst der Ordner auch korrekt "Junk-E-Mail"? Wenn nicht dann anpassen.
Antworten Top
#7
Hi René,

ein Bild sagt mehr als tausend Worte ...

           

...ich hoffe, du kannst damit etwas anfangen.
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Antworten 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.
Antworten Top
#9
Hi René,

kein Problem, komme aber gesund aus dem Urlaub, gelle Thumbsupsmileyanim
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Antworten Top
#10
Hallo René,

na, Lust dich meinem Thema zu widmen?

Übrigens, wie war der Urlaub?
Grüße aus Bremen
Bernie

"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"

MS Office 2016 Pro  32bit - Win 10 Pro 64 bit
Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
Antworten Top


Gehe zu:


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