Top-Themen

Aktuelle Themen (A bis Z)

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, 1237 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
Visual Studio
VB.NET - E-Mail Text über mehrere Formen
Frage von duschgasVisual Studio2 Kommentare

Hallo, ich bräuchte nochmals Hilfe. Ich habe 10 Formen aus denen ich E-Mails versende, deren Text immer gleich ist. ...

Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio25 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

E-Mail
Alle E-Mails in einer Postfix Mailqueue löschen
Tipp von FrankE-Mail2 Kommentare

Hallo Administratoren, So löscht man alle Mails die noch in der Postfix Mailqueue hängen: P.S. ich weiß, dass ist ...

E-Mail
E-Mail Versand Fehler 550
Frage von Jacques-PE-Mail29 Kommentare

Hallo Liebe Admins, dies ist mein erster Post hier, weshalb ich hoffe die Regeln alle richtig verstanden zu haben. ...

Neue Wissensbeiträge
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 17 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 22 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 22 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
gelöst Frage von prodriveNetzwerkmanagement12 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...