Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 1218 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
Outlook & Mail
gelöst E-Mail-Postfächer lassen sich in Outlook 2016 nicht löschen (4)

Frage von achimvanveen zum Thema Outlook & Mail ...

Exchange Server
gelöst E-Mail Versand nicht möglich - Providerwechsel (6)

Frage von Campino86 zum Thema Exchange Server ...

Outlook & Mail
gelöst Bestimmte Anhänge bei E-mails mit Exchange 2010 löschen (5)

Frage von jojo0411 zum Thema Outlook & Mail ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Router & Routing
gelöst Getrenntes Routing bei VoIP und Daten (12)

Frage von Hobbystern zum Thema Router & Routing ...