Hallo,
ich hoffe ich bin hier richtig. Ich versuche folgende Problemstellung zu lösen:
Ich bin in der Lage mit nachfolgendem Code die eingegangenen Emails in einer Sammelmailbox auszulesen und in eine Tabelle auf einem SQL Server zu schreiben.:
Das funktioniert supe. Nun möchte ich aber beim Durchlaufen der Schleife bestimmte emails (zum Beispiel Absender "NOREPLY") direkzt in der Inbox LÖSCHEN!. Leider bekomme ich das nicht hin:
so nach dem Motto: "imapClient.Inbox.Delete(uid)"
GIBT ES SOWAS?
Herzlichen Dank für Eure Hilfe
Christian
ich hoffe ich bin hier richtig. Ich versuche folgende Problemstellung zu lösen:
Ich bin in der Lage mit nachfolgendem Code die eingegangenen Emails in einer Sammelmailbox auszulesen und in eine Tabelle auf einem SQL Server zu schreiben.:
VB.NET-Quellcode
- Dim con As New SqlConnection(CONSTR)
- Dim anzahl As Integer
- Dim sel As String = ""
- Dim input As String = ""
- Dim username As String = "XXX"
- Dim password As String = "YYY"
- Dim imapServer As String = "imap.XXX.com"
- Dim emailMessage
- Dim subject As String
- Dim imapClient As New ImapClient(New ProtocolLogger("imap.log"))
- Dim i As Integer = 0
- System.Net.ServicePointManager.ServerCertificateValidationCallback = Function(se As Object, cert As System.Security.Cryptography.X509Certificates.X509Certificate, chain As System.Security.Cryptography.X509Certificates.X509Chain, sslerror As System.Net.Security.SslPolicyErrors) True
- imapClient.Connect(imapServer, 143, SecureSocketOptions.StartTls) 'SslOnConnect)
- imapClient.Authenticate(username, password)
- imapClient.Inbox.Open(FolderAccess.ReadWrite)
- Dim uids = imapClient.Inbox.Search(SearchQuery.All)
- Dim x As String()
- 'Browse through all emails in mailbox "INBOX" of PSAAUTO
- For Each uid In uids
- i = i + 1
- 'Read the email details per email
- emailMessage = imapClient.Inbox.GetMessage(uid)
- emailMessage.writeTo(String.Format("{0}.eml", uid))
- subject = emailMessage.Subject & ""
- 'imapClient.Inbox.DeleteMessage(newMessage.IndexOnServer, True)
- sel = "Insert into Testemail(UID, Email_From, Email_Subject) Values ('" & uid.ToString & "','" & emailMessage.from.ToString & "','" & subject & "')"
- If Get_UID(uid.ToString) = 0 Then 'Check if email is already in database only insert new emails
- Try
- con.Open()
- Dim cmd As New SqlCommand(sel, con)
- anzahl = cmd.ExecuteNonQuery()
- If (anzahl > 0) Then
- Else
- 'MsgBox("Speichern fehlgeschlagen")
- End If
- con.Close()
- Catch ex As Exception
- 'MsgBox(ex.Message)
- End Try
- End If
- Next
Das funktioniert supe. Nun möchte ich aber beim Durchlaufen der Schleife bestimmte emails (zum Beispiel Absender "NOREPLY") direkzt in der Inbox LÖSCHEN!. Leider bekomme ich das nicht hin:
so nach dem Motto: "imapClient.Inbox.Delete(uid)"
GIBT ES SOWAS?
Herzlichen Dank für Eure Hilfe
Christian