Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Fehler beim Löschen von E-Mails über VB.NET

Frage Entwicklung Visual Studio

Mitglied: 0belixx

0belixx (Level 1) - Jetzt verbinden

26.05.2014, aktualisiert 10:23 Uhr, 1174 Aufrufe, 3 Kommentare

Hallo Leute,

ich brauche mal bitte Hilfe.

Folgendes. Ich möchte über VB unteranderem E-Mails in einem bestimmtem Ordner, erst auf "gelesen" setzen und dann löschen. Dabei löscht er aber immer die Hälfte der Mail. Also zb wenn ich 20 habe löscht er 10, beim zweitem Aufruf löscht er dann 5 usw

01.
For Each line As String In File.ReadLines("C:\Temp\Test.txt") 
02.
            For Each Mails In Ordner.Items 
03.
                If Mails.Subject.contains(line) Then 
04.
                    Mails.Unread = False 
05.
                    Mails.Delete() 
06.
                End If 
07.
            Next 
08.
        Next
Wäre für Hilfe wirklich dankbar
0belixx




Mitglied: colinardo
LÖSUNG 26.05.2014, aktualisiert um 10:23 Uhr
Moin obelixx,
das liegt daran das du die Mails innerhalb von der Schleife löschst, aber diese Änderung in Ordner.Items währendessen nicht reflektiert wird. Am besten ist es wenn du alle zutreffenden Mails als Objekte in einer Collection oder einer List(Of MailItem) zwischenspeicherst und nach deiner Schleife für alle Objekte in der Collection die Löschmethode aufrufst.
Also etwa so:
01.
Dim mailCollection As new Collection 
02.
For Each line As String In File.ReadLines("C:\Temp\Test.txt")  
03.
  For Each mail As MailItem In Ordner.Items 
04.
      If mail.Subject.Contains(line) Then 
05.
          ' Mailitem zur Collection hinzufügen 
06.
          mailCollection.Add(mail) 
07.
      End If  
08.
  Next 
09.
Next 
10.
 
11.
' Für alle Mailitems in der Collection die entsprechenden Aktionen durchführen 
12.
For Each itm As MailItem In mailCollection 
13.
    itm.Unread = False 
14.
    itm.Delete() 
15.
Next
Will man anders herum alle Mails eines Ordners löschen, lässt sich das mit einer While-Schleife machen, die so lange die erste Mail eines Ordners löscht bis sich keine Mails mehr im Ordner befinden.
01.
While Ordner.items.count > 0 
02.
  Ordner.items(0).Delete() 
03.
Wend
Grüße Uwe
Bitte warten ..
Mitglied: 0belixx
26.05.2014 um 10:23 Uhr
Hallo Uwe,

super Idee, habe ich ganz übersehen das der Ordner das ja nicht mitbekommt, vielen Dank, es funktioniert.
0belixx
Bitte warten ..
Mitglied: colinardo
26.05.2014, aktualisiert um 10:47 Uhr
Noch als Info für eine effizientere Filterung von Ordnern in denen mehr als nur ein "paar" Mails liegen. Du kannst die Items in einem Ordner bereits mit einer Outlook-Funktion einschränken, so dass nicht für jeden Suchbegriff alle Mails durchlaufen werden müssen. Dies macht man mit der Restrict-Methode der Items-Collection. Hier ein Beispiel wie so was aussieht:
01.
For Each mail As MailItem In Ordner.Items.Restrict("@SQL=""http://schemas.microsoft.com/mapi/proptag/0x0037001f"" like '%" & line & "%'") 
02.
... 
03.
.... 
04.
... 
05.
Next
Hier werden sogenannte MAPI-Property-Tags verwendet (der obige verweist auf das Subject) und mit SQL Syntax gefiltert. So wird schon im Vornherein die Menge an Mails eingeschränkt die in Frage kommen und der ganze Vorgang beschleunigt.

Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
VB for Applications
VB.net Combobox databinding langsam (4)

Frage von ForgottenRealm zum Thema VB for Applications ...

Visual Studio
gelöst Vb.net: Word-Doc seitenweise durchsuchen nach Textmarke (7)

Frage von ahstax zum Thema Visual Studio ...

Basic
gelöst Mit vb.net PDF in Word-Dok einfügen (10)

Frage von ahstax zum Thema Basic ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(2)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (39)

Frage von Datsspeed zum Thema Exchange Server ...

Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Windows 10
Windows Store Apps ohne Windows Store installieren (10)

Frage von keefien zum Thema Windows 10 ...

Off Topic
Fachzeitschriften als E-Book oder hardcoded? (10)

Frage von KowaKowalski zum Thema Off Topic ...