E-Mails empfangen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 39 Antworten in diesem Thema. Der letzte Beitrag () ist von Jason.

    E-Mails empfangen

    Hallo.

    Ich habe vorhin nach einer Lösung gesucht um E-Mails vom Server abrufen zukönnen - und bin fündig geworden:

    VB.NET-Quellcode

    1. Public Shared Function FetchAllMessages(hostname As String, port As Integer, useSsl As Boolean, username As String, password As String) As List(Of Message)
    2. ' The client disconnects from the server when being disposed
    3. Using client As New Pop3Client()
    4. client.Connect(hostname, port, useSsl)
    5. client.Authenticate(username, password)
    6. Dim messageCount As Integer = client.GetMessageCount()
    7. Dim allMessages As New List(Of Message)(messageCount)
    8. ' Messages are numbered in the interval: [1, messageCount]
    9. ' Ergo: message numbers are 1-based.
    10. ' Most servers give the latest message the highest number
    11. For i As Integer = messageCount To 1 Step -1
    12. allMessages.Add(client.GetMessage(i))
    13. Next
    14. ' Now return the fetched messages
    15. Return allMessages
    16. End Using
    17. End Function


    Ich weiß jetzt aber nicht wie ich die Funktion in Code aufrufe, und dann die ausgelesenen E-Mails in einer ListBox auflisten kann.

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Lies doch mal ein gutes Buch, da gibts welche umsonst: Entwickler-Ressourcen und Tools, Bücher und WebCasts
    Weil der Code ist selbsterklärend für jeden, der auch nur die niedersten Basics beherrscht (Funktion aufrufen, Rückgabewert verwenden).

    sorry - Ich halte es nicht für soo sehr sinnig, dir jetzt hier im Forum das Programmieren beizubringen, angefangen von Adam und Eva.

    Ach jetzt heißts wieder ich bin arrogant, und nicht hilfreich - also hier dein Code:

    VB.NET-Quellcode

    1. dim messages = FetchAllMessages(hostname, port, useSsl, username, password)
    2. Listbox1.DataSource= messages
    3. Listbox1.DisplayMember = "Topic"
    zeile#3 ist unsicher, kommt auf den Message-Datentyp an - den kenne ich nicht.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Von der Seite habe ich den Code.

    EMAILListBox.items.addrange(...)

    Ich kann inerhalb der Funktion auf keine Steuerelemente zuweisen, denn >EMAILListBox< wird untersrichen.

    Und was muss ich in den Klammern reinschreiben?
    Ich habe es schon mit messageCount(i) versucht.
    1. POP3-Server des E-Mail Anbieters z.B: pop.gmail.com
    2. Port z.B 995
    3. Soll SSL benutzt werden
    4. Benutzername - meistens die E-Mail Adresse
    5. Passwort

    Hätte man aber selber herrausfinden können.
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    Ich habe jetzt 2 Fehler.

    Ich habe die Variablen in die Klammern gescrieben. Es wird aber als Falsch angezeigt.

    VB.NET-Quellcode

    1. EmfpangeneEmailsListe.Items.AddRange(hostname, port, useSsl, username, password)


    von

    VB.NET-Quellcode

    1. allMessages.Add(client.GetMessage(i))

    wird >client.GetMessage(i)< ebenfalls rot untersrichen.

    Und kann ich in die Variabke useSsl reinschreiben?

    Hier der Code:

    VB.NET-Quellcode

    1. Private Sub Button53_Click(sender As Object, e As EventArgs) Handles Button53.Click
    2. Dim hostname As String = ""
    3. Dim port As Integer = ""
    4. Dim useSsl As Integer = ""
    5. Dim username As String = ""
    6. Dim password As String = ""
    7. Dim messages = FetchAllMessages(hostname, port, useSsl, username, password)
    8. EmfpangeneEmailsListe.DataSource = messages
    9. EmfpangeneEmailsListe.DisplayMember = "Topic"
    10. EmfpangeneEmailsListe.Items.AddRange(hostname, port, useSsl, username, password)
    11. End Sub
    12. Public Shared Function FetchAllMessages(hostname As String, port As Integer, useSsl As Boolean, username As String, password As String) As List(Of Message)
    13. Using client As New Pop3Client()
    14. client.Connect(hostname, port, useSsl)
    15. client.Authenticate(username, password)
    16. Dim messageCount As Integer = client.GetMessageCount()
    17. Dim allMessages As New List(Of Message)(messageCount)
    18. For i As Integer = messageCount To 1 Step -1
    19. allMessages.Add(client.GetMessage(i))
    20. Next
    21. Return allMessages
    22. End Using
    23. End Function
    useSsl ist ein Boolean kein Integer. Mach jeweils True und False wobei True vorzuziehen ist.


    Jason schrieb:

    wird >client.GetMessage(i)< ebenfalls rot untersrichen.


    Und was wird als Fehler angezeigt?


    Jason schrieb:

    VB.NET-Quellcode

    1. EmfpangeneEmailsListe.DataSource = messages
    2. EmfpangeneEmailsListe.DisplayMember = "Topic"
    3. EmfpangeneEmailsListe.Items.AddRange(hostname, port, useSsl, username, password)


    Mach das weg und ersetzt es mit EmfpangeneEmailsListe.Items.AddRange(messages)
    KaskadekingDE on GitHub :)
    Bitte keine Fragen über Programmierung per PN! Dafür ist das Forum hier.

    Who cares? ¯\_(ツ)_/¯
    Soll ich alles weg machen?

    VB.NET-Quellcode

    1. EmfpangeneEmailsListe.DataSource = messages
    2. EmfpangeneEmailsListe.DisplayMember = "Topic"
    3. EmfpangeneEmailsListe.Items.AddRange(hostname, port, useSsl, username, password)


    oder nur

    VB.NET-Quellcode

    1. EmfpangeneEmailsListe.Items.AddRange(hostname, port, useSsl, username, password)

    ?

    VB.NET-Quellcode

    1. Private Sub Button53_Click(sender As Object, e As EventArgs) Handles Button53.Click
    2. Dim hostname As String = "pop.gmx.net"
    3. Dim port As Integer = "995"
    4. Dim useSsl As Integer = ""
    5. Dim username As String = "email"
    6. Dim password As String = "passwort"
    7. Dim messages = FetchAllMessages(hostname, port, useSsl, username, password)
    8. EmfpangeneEmailsListe.DataSource = messages
    9. EmfpangeneEmailsListe.DisplayMember = "Topic"
    10. End Sub


    Ist der Aufruf soweit richtig?
    ich habe die useSsl-variable zu einer Boolean Var gemacht.

    VB.NET-Quellcode

    1. allMessages.Add(client.GetMessage(i))

    >client.GetMessage(i)< wird rot untersrichen:
    " Der Wert vom Typ OpenPOP.Mime.Message kann nicht in System.Windows.Forms.Message konvertiert werden"

    VB.NET-Quellcode

    1. Public Shared Function FetchAllMessages(hostname As String, port As Integer, useSsl As Boolean, username As String, password As String) As List(Of Message)
    2. Using client As New Pop3Client()
    3. client.Connect(hostname, port, useSsl)
    4. client.Authenticate(username, password)
    5. Dim messageCount As Integer = client.GetMessageCount()
    6. Dim allMessages As New List(Of Message)(messageCount)
    7. For i As Integer = messageCount To 1 Step -1
    8. allMessages.Add(client.GetMessage(i))
    9. Next
    10. Return allMessages
    11. End Using
    12. End Function
    Ich habe >Message< Importiert und der Fehler ist nun verschwunden.
    ok.

    Also wird mit dem Code die Funktion aufgerufen?

    VB.NET-Quellcode

    1. Dim hostname As String = "pop.gmx.net"
    2. Dim port As Integer = 995
    3. Dim useSsl As Boolean = True
    4. Dim username As String = "email"
    5. Dim password As String = "passwort"
    6. Dim messages = FetchAllMessages(hostname, port, useSsl, username, password)
    7. EmfpangeneEmailsListe.DataSource = messages
    8. EmfpangeneEmailsListe.DisplayMember = "Topic"