Spam verwijderen m.b.v. Outlook Macro

Status
Niet open voor verdere reacties.

Juzzz

Gebruiker
Lid geworden
15 jan 2008
Berichten
281
Hoi allemaal,

Ik wil in de public folder/ openbare mappen (Alle openbare mappen / all public folders > Spam) zoeken naar een woord, dat heb ik al maar hoe selecteer ik het dan en delet ik het.

ik wil een aantal woordenonder elkaar zetten zodat hij echt de spam verweiderd en de e-mails die perongelijk in de spam zitten dat ik die er uit kan halen.

het maakt niet uit als ik 20 ifs onder elkaar heb als ik maar de code heb om de e-mails gelijk aan "..." te verweideren.

Mijn code tot nu toe:
Code:
Public Sub Spam_uitzoeker()

Dim ns As NameSpace
Dim Item As Object
Dim Atmt As Attachment
Dim i As Integer

Set ns = GetNamespace("MAPI")
Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")

    If Spambox.Items.Count = 0 Then
       MsgBox "De Spam map is leeg YEAH!", vbInformation, _
               "Geen spam gevonden"
    End If
    
    If Inbox.Items.Count > 0 Then
        If Item.Subject = "sex" Then
            [COLOR="Red"][B]Hier de code die onbreekt[/B][/COLOR]
        End If
    End If

End Sub

Kan iemand mij helpen

ty
 
Ik weet van het object model van Outlook vrijwel niets, maar zoek eens op

GetNamespace

in de blog van Dick Kusleika: www.dailydoseofexcel.com

Ik herinner mij daarover iets gelezen te hebben.

Wigi
 
Zoiets: ik zou zelf dan een array maken met alle woorden en deze array doorlopen.
arrWords = split"("sex|porno|etc")

Code:
    If spambox.Items.Count = 0 Then
       MsgBox "De Spam map is leeg YEAH!", vbInformation, _
               "Geen spam gevonden"
    End If
    
    For Each Item In spambox.Items
        If Item.Subject Like "*sex*" Then
            Item.Delete
        End If
    Next
 
Zoiets: ik zou zelf dan een array maken met alle woorden en deze array doorlopen.
arrWords = split"("sex|porno|etc")

dat kan maar hoor die " na die split?

BTW ik vind deze code:

Code:
Public Sub EmptyJunkEmailFolder()

    Dim outApp As Outlook.Application
    Dim junkFolder As Outlook.MAPIFolder
    Dim junkItem, deleteItem As Object
    Dim entryID As String
    
    Set outApp = CreateObject("outlook.application")
    Set junkFolder = [COLOR="Green"]outApp.GetNamespace("MAPI").GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("TestF")[/COLOR]
    
    
    For Each junkItem In junkFolder.Items
        entryID = junkItem.entryID  ' Store item entry id
        junkItem.Delete             ' Delete from junk mail folder
               
        ' To permanently delete item find and delete from deleted items
        Set deleteItem = outApp.Session.GetItemFromID(entryID)
        deleteItem.Delete
    Next
    
    Set junkItem = Nothing
    Set deleteItem = Nothing
    Set junkFolder = Nothing
    Set outApp = Nothing
    
End Sub

maar die code werkt niet! (ik heb het groene zelf toegevoegt maar die regel doed het die heb ik al appart getest)
 
De extra " bij de split was niet de bedoeling, dat krijg je als je om 23:15 nog code probeert te typen lol

De code die ik je gegeven had werkte gewoon hoor, moest je wel nog even in je code plaatsen.

dus bv
Code:
Public Sub EmptyJunkEmailFolder()

Dim ns As NameSpace
Dim Item As MailItem
Dim Atmt As Attachment

Set ns = GetNamespace("MAPI")
Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")

    If spambox.Items.Count = 0 Then
       MsgBox "De Spam map is leeg YEAH!", vbInformation, _
               "Geen spam gevonden"
    End If
    
    For Each Item In spambox.Items
        If Item.Subject Like "*sex*" Then
            Item.Delete
        End If
    Next

End Sub
 
Yeah

ongelooflijk!!!
hij doed het gewoon :P TY ReneDirks!

maar 2 kleine probleemjes:

1. Ik weet het niet zeker maar volgens mij verweiderd hij niet alle

2. Hoe kan je meerdere tegelijk zoeken like: dinges|twee|andere, of is dat af te raden ivm vast lopen

3. dit is alleen onderwerp kan je ook onderwerp + bericht bekijken net zoals de search?

Als je me hierbij kan helpen:
TY A LOT!!!!!
 
No problem

Code:
Public Sub EmptyJunkEmailFolder()

Dim ns As NameSpace
Dim Item As MailItem
Dim Atmt As Attachment
Dim i As Integer
Const strSpamText As String = "*sex*|*porn*"
Dim arrSpamText() As String

arrSpamText = Split(strSpamText, "|")


Set ns = GetNamespace("MAPI")
'Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")
Set spambox = ns.GetDefaultFolder(olFolderDeletedItems)

    If spambox.Items.Count = 0 Then
       MsgBox "De Spam map is leeg YEAH!", vbInformation, _
               "Geen spam gevonden"
    End If
    
    For Each Item In spambox.Items
        Debug.Print Item.Subject
        For i = LBound(arrSpamText) To UBound(arrSpamText)
            If Item.Subject Like arrSpamText(i) Then
                Item.Delete
            End If
        Next
    Next
End Sub

Om het bericht zelf te bekijken moet je ipv Item.Subject Item.HTMLBody of Item.Body gebruiken (resp HTML of tekst versie).
 
Sorry deze doed het niet :(

geeft een fout aan bij:
Code:
Public Sub EmptyJunkEmailFolder()

Dim ns As NameSpace
Dim Item As MailItem
Dim Atmt As Attachment
Dim i As Integer
Const strSpamText As String = "*sex*|*porn*"
Dim arrSpamText() As String

arrSpamText = Split(strSpamText, "|")


Set ns = GetNamespace("MAPI")
'Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")
Set spambox = ns.GetDefaultFolder(olFolderDeletedItems)

    If spambox.Items.Count = 0 Then
       MsgBox "De Spam map is leeg YEAH!", vbInformation, _
               "Geen spam gevonden"
    End If
    
    For Each Item In spambox.Items
        Debug.Print Item.Subject
        For i = LBound(arrSpamText) To UBound(arrSpamText)
            [COLOR="Yellow"]If Item.Subject Like arrSpamText(i) Then[/COLOR]
                Item.Delete
            End If
        Next
    [COLOR="Yellow"]Next[/COLOR]
End Sub

eerst bijd ie next en later ineens bij die "if item..."

btw ik zag dat je de set spambox had veranderd hoezo eigelijk??
 
btw ik zag dat je de set spambox had veranderd hoezo eigelijk??
Die kun je terugzetten, dat was bij mij om te testen.

zet voor die if even een msgbox arrSpamText(i)
ben even benieuwd wat voor 'n waarde je krijgt. Overigens, wat heb je bij strSpamText ingevuld?
 
srry ben niet helemaal super in vb, sterker nog helaal niet zo ben pas begonnen beetje macro's aant maken voro outlook.

wat moet er bij arrSpamText = Split(strSpamText, "|") in gevult worden???

en waar voor die if (geeft anders een wat van de code met jou code er in ^^)

ty
 
Ik stop in die arrSpamtext de diverse woorden waarop een 'spamhit' geschiedt. Ik vul deze array met een Split() functie:
Code:
Const strSpamText As String = "*sex*|*porn*"
Dim arrSpamText() As String

Dit resulteert in de volgende waarden:
Code:
arrSpamText(0) = "*sex*"
arrSpamText(1) = "*porn*"

In de loop i=begin tot einde array kijk ik of het subject overeenkomt met de 'teller'waarde i; als dat zo is dan gaat het mailtje in de vuilnisbak..
Code:
If Item.Subject Like arrSpamText(i) Then

Is dat nu misschien duidelijker?
 
Ja je legt het echt super uit nu snap ik het.

ok ff alles op een rijtje:

Als ik deze code activeer duurd het ff (net of hij aan het verweideren is) maar geetf dan een foutmelding (zie rood) tevens verweiderd hij niets (ook niet het eerste woord)
Code:
Public Sub EmptyJunkEmailFolder()

Dim ns As NameSpace
Dim Item As MailItem
Dim Atmt As Attachment
Dim i As Integer
Const strSpamText As String = "*sex*|*porn*"
Dim arrSpamText() As String
arrSpamText = Split(strSpamText, "|")


Set ns = GetNamespace("MAPI")
Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")

    If Spambox.Items.Count = 0 Then
       MsgBox "De Spam map is leeg YEAH!", vbInformation, _
               "Geen spam gevonden"
    End If
    
    For Each Item In Spambox.Items
        Debug.Print Item.Subject
        For i = LBound(arrSpamText) To UBound(arrSpamText)
            [B][COLOR="Red"]If Item.Subject Like arrSpamText(i) Then[/COLOR][/B]
                Item.Delete
            End If
        Next
    Next
End Sub

ok de volgende code voor test:

Hier geeft hij de pop-up *sex*.
Code:
Public Sub EmptyJunkEmailFolder()

Dim ns As NameSpace
Dim Item As MailItem
Dim Atmt As Attachment
Dim i As Integer
Const strSpamText As String = "*sex*|*rolex*"
Dim arrSpamText() As String

arrSpamText = Split(strSpamText, "|")


Set ns = GetNamespace("MAPI")
Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")

    If Spambox.Items.Count > 0 Then
       MsgBox arrSpamText(i), vbInformation, _
               "Geen spam gevonden"
    End If
End Sub

BTW!
Wat betekent die ** ?? moet dat er bij? als ik de laaste code met die msgBox doe krijg ik de pop-up sex en geen *sex* mis ligt het daar aan?

En als ik de eerste code zonder die ** doe dan laat hij lang net of hij wat aan het doen is MAAR doed gewoon niets, ook geen error.

Toevoeging
- Zoekt hij nu alleen maar op subject, of ook in de text van het bericht?
- Is de zoekfunctie hoofdlettergevoellig btw?

ty voor je hulp
 
Laatst bewerkt:
meestal reageer je snel ...?
ben je op vakantie :P?
 
ik kreeg net een bericht vof het is opgelost.

nee het is nog niet opgelost. hier de herhaling:


Ja je legt het echt super uit nu snap ik het.

ok ff alles op een rijtje:

Als ik deze code activeer duurd het ff (net of hij aan het verweideren is) maar geetf dan een foutmelding (zie rood) tevens verweiderd hij niets (ook niet het eerste woord)
Code:
Public Sub EmptyJunkEmailFolder()

Dim ns As NameSpace
Dim Item As MailItem
Dim Atmt As Attachment
Dim i As Integer
Const strSpamText As String = "*sex*|*porn*"
Dim arrSpamText() As String
arrSpamText = Split(strSpamText, "|")


Set ns = GetNamespace("MAPI")
Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")

    If Spambox.Items.Count = 0 Then
       MsgBox "De Spam map is leeg YEAH!", vbInformation, _
               "Geen spam gevonden"
    End If
    
    For Each Item In Spambox.Items
        Debug.Print Item.Subject
        For i = LBound(arrSpamText) To UBound(arrSpamText)
            [B][COLOR="Red"]If Item.Subject Like arrSpamText(i) Then[/COLOR][/B]
                Item.Delete
            End If
        Next
    Next
End Sub

ok de volgende code voor test:

Hier geeft hij de pop-up *sex*.
Code:
Public Sub EmptyJunkEmailFolder()

Dim ns As NameSpace
Dim Item As MailItem
Dim Atmt As Attachment
Dim i As Integer
Const strSpamText As String = "*sex*|*rolex*"
Dim arrSpamText() As String

arrSpamText = Split(strSpamText, "|")


Set ns = GetNamespace("MAPI")
Set Spambox = ns.GetDefaultFolder(olPublicFoldersAllPublicFolders).Folders("Spam")

    If Spambox.Items.Count > 0 Then
       MsgBox arrSpamText(i), vbInformation, _
               "Geen spam gevonden"
    End If
End Sub

BTW!
Wat betekent die ** ?? moet dat er bij? als ik de laaste code met die msgBox doe krijg ik de pop-up sex en geen *sex* mis ligt het daar aan?

En als ik de eerste code zonder die ** doe dan laat hij lang net of hij wat aan het doen is MAAR doed gewoon niets, ook geen error.

Toevoeging
- Zoekt hij nu alleen maar op subject, of ook in de text van het bericht?
- Is de zoekfunctie hoofdlettergevoellig btw?

ty voor je hulp
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan