69304
Goto Top

VBA in Outlook Nachrichten als SPAM kennzeichnen Fehlermeldung

Hallo Leute!

Ich habe in VBA von Outlook ein Skript geschrieben, dass beim reinkommen der Nachricht den Betreff überprüft auf eine Zeichenfolge (z.B. Viagra).
Die Nachricht soll dann als "*SPAM*" gekennzeichnet werden.

Dies funktionierte auch noch soweit, bis ich eine FileReader hinzugefügt habe, der Zeilen einer Text-Datei ausliest und dieses dann als Kriterium nimmt.

Die Fehlermeldung lautet dann: "Laufzeitfehler '91': Objektvariable oder With-Blockvariable nicht festgelegt"

Diese tritt an der Zeile mit "If InStr(oEmail.HTMLBody, SpamKriterium) > 0 Then" auf, wenn ich per Break-Points versuche den Fehler zu ermitteln. Alles davor geht.

Hier mein Code, ich hoffe jemand findet den Fehler....

Private Sub Application_NewMail()
    Dim oNS As Outlook.NameSpace
    Dim oInbox As Outlook.MAPIFolder
    Dim oEmail As Outlook.MailItem
    Dim i As Integer
    Dim SpamKriterium As String
    Dim SpamDateipfad As String
    Dim SpamKennzeichnung As String
    
    SpamDateipfad = "C:\spam.txt"  
    SpamKennzeichnung = "*****SPAM*****"  
    Set oNS = Application.GetNamespace("MAPI")  
    Set oInbox = oNS.GetDefaultFolder(olFolderInbox)
    
    Open SpamDateipfad For Input As #1
    Do While Not EOF(1)
        Line Input #1, SpamKriterium
    
        For i = 1 To oInbox.Items.Count
            Set oEmail = oInbox.Items.Item(i)
            If oEmail.UnRead = True Then
                If InStr(oEmail.HTMLBody, SpamKriterium) > 0 Then
                    oEmail.Subject = SpamKennzeichnung & oEmail.Subject
                    oEmail.UnRead = True
                    oEmail.Save
                End If
            End If
        Next i
        Set oInbox = Nothing
        Set oNS = Nothing
    Loop
    Close #1
End Sub

Content-Key: 136650

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

Printed on: April 19, 2024 at 05:04 o'clock

Mitglied: 76109
76109 Feb 23, 2010 at 13:58:37 (UTC)
Goto Top
Hallo rbrixel !

An der Zeile mit InStr fällt mir kein Fehler auf, allerdings ist die Codezeile 29 und 30 falsch plaziert. Sollte logischerweise erst nach dem Loop kommen.

Gruß Dieter
Mitglied: 69304
69304 Feb 23, 2010 at 14:01:35 (UTC)
Goto Top
jupp, das wars... thx ;)

Private Sub Application_NewMail()
'-------------------------------------------------------  
' Outlook-Anti-Spam  
' Überüprüfung in Text-Body, HTML-Body, Betreff, Sender Email-Adresse, Sender Email-Name  
' anhand Wörter aus Textdatei  
'-------------------------------------------------------  
    Dim oNS As Outlook.NameSpace
    Dim oInbox As Outlook.MAPIFolder
    Dim oEmail As Outlook.MailItem
    Dim i As Integer
    Dim SpamKriterium As String
    Dim SpamDateipfad As String
    Dim SpamKennzeichnung As String
    
    SpamDateipfad = "C:\spam.txt"  
    SpamKennzeichnung = "*****SPAM*****"  
    Set oNS = Application.GetNamespace("MAPI")  
    Set oInbox = oNS.GetDefaultFolder(olFolderInbox)
    
    Open SpamDateipfad For Input As #1
    Do While Not EOF(1)
        Line Input #1, SpamKriterium
        For i = 1 To oInbox.Items.Count
            Set oEmail = oInbox.Items.Item(i)
            If oEmail.UnRead = True Then
                If InStr(oEmail.HTMLBody, SpamKriterium) > 0 Or InStr(oEmail.Subject, SpamKriterium) > 0 Or InStr(oEmail.SenderEmailAddress, SpamKriterium) > 0 Or InStr(oEmail.SenderName, SpamKriterium) > 0 Or InStr(oEmail.Body, SpamKriterium) > 0 Then
                    oEmail.Subject = SpamKennzeichnung & oEmail.Subject
                    oEmail.UnRead = True
                    oEmail.Save
                End If
            End If
        Next i
    Loop
    Set oInbox = Nothing
    Set oNS = Nothing
    Close #1
End Sub
Mitglied: 76109
76109 Feb 23, 2010 at 14:18:27 (UTC)
Goto Top
Hallo rbrixel!

Keine Ursache! Den Beitrag könntest Du aber noch auf gelöst setzenface-wink

Gruß Dieter