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, 1184 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
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(9)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

Frage von pierrehansen zum Thema LAN, WAN, Wireless ...

Basic
Programmierung von Windows Programmen (10)

Frage von Ghost108 zum Thema Basic ...