POP3 Mails ABRUFEN mit SSL

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von compufreak.

    POP3 Mails ABRUFEN mit SSL

    Hallo Gemeinde,
    wie die Überschrift schon sagt, versuche ich mails mit Anhang über POP3 abzurufen und die Anhänge auf der Festplatte abzulegen.
    Diese Mails sollen in eigene Ordner agbelegt werden, je nach Absender (aber das sollte nicht das Problem sein)
    ich habe schon früher mails abgerufen mit:

    VB.NET-Quellcode

    1. Dim pop3 As New POPClient
    2. pop3.Disconnect()
    3. pop3.Connect("Mail@privaterprovider.de", 995)
    4. pop3.Authenticate("Benutzername", "Passwort")
    5. ListBox1.Items.Clear()
    6. For i As Integer = 1 To pop3.GetMessageCount
    7. Dim m As MIMEParser.Message = pop3.GetMessage(i, False)
    8. My.Application.DoEvents()
    9. ListBox1.Items.Add("From: " & m.From & " <" & m.FromEmail & "> - " & m.Subject)
    10. If m.MessageBody.Count > 0 Then
    11. Dim Attach As New List(Of MIMEParser.Attachment)
    12. Messages.Add(m.MessageBody(m.MessageBody.Count - 1))
    13. For ii As Integer = 1 To m.AttachmentCount - 1
    14. Attach.Add(m.GetAttachment(ii))
    15. Next
    16. AttachArray.Add(Attach)
    17. End If
    18. ' pop3.DeleteMessage(i) ' Wenn die Message nach abholung gelöscht werden soll
    19. Next
    20. pop3.Disconnect()

    Stand auch mal hie rim Forum, das klappte auch ohne SSL super, aber nun muss ich die Mails mit SSL abrufen und habe es mit der aktuellen Version von OpenPop probiert.
    Da funktioniert aber:

    VB.NET-Quellcode

    1. ListBox1.Items.Add("From: " & m.From & " <" & m.FromEmail & "> - " & m.Subject)

    und

    VB.NET-Quellcode

    1. If m.MessageBody.Count > 0 Then
    2. Dim Attach As New List(Of MIMEParser.Attachment)
    3. Messages.Add(m.MessageBody(m.MessageBody.Count - 1))
    4. For ii As Integer = 1 To m.AttachmentCount - 1
    5. Attach.Add(m.GetAttachment(ii))

    nicht mehr.
    Kann mir da jemand weiterhelfen oder gibt es eine andere Möglichkeit die Mails mit Anhängen abzurufen ?
    Es kann auch exchange oder IMAP sein, und es sollten immer nur die "neuen" Mails sein, die abgerufen werden, im Notfall könnte ich sie auch nach erfolgreichen Einlesen löschen.

    EDIT:

    VB.NET-Quellcode

    1. pop3.Connect("Mail@privaterprovider.de", 995, UseSSL:=1)

    oder

    VB.NET-Quellcode

    1. pop3.Connect("Mail@privaterprovider.de", 995, True)

    funktionieren mit der alten OpenPop Version nicht
    Deine letzten beiden Codebeispiele sehend: Hast Du
    Option Strict On :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Nun die neue Version scheint einiges verändert zu haben. Wie mal dort Attachments abrufst musst du dir aus der Dokumentation heraussuchen.

    hpop.sourceforge.net/documentation/index.html

    hpop.sourceforge.net/documenta…e.FindAllAttachments.html

    Musst den Code dann halt entsprechend anpassen.
    Das prüfen auf neue Messages musst du selbst regeln, das kann POP3 nicht. Ich habe es so gemacht, das ich Versender E-Mail, Datum, Betreff gehashed habe und einfach diesen mit den lokalen Prüfe, ist der Hash vorhanden ists ne alte Mail, ansonsten eine neue.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Dodo“ ()

    Ohne weiteren Kommentar:
    Dann wird es aber Zeit :!:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ok, ich habs mal eingeschaltet (nur für Dich :) ), bekomme nun bei:

    VB.NET-Quellcode

    1. For Each att As MIMEParser.Attachment In AttachArray(sender.SelectedIndex)

    Fehler 3 "Option Strict On" lässt spätes Binden nicht zu.

    und bei

    VB.NET-Quellcode

    1. Dim att As MIMEParser.Attachment = AttachArray(ListBox1.SelectedIndex)(sender.SelectedIndex)

    Fehler 4 "Option Strict On" lässt spätes Binden nicht zu.
    bei

    VB.NET-Quellcode

    1. Messages.Add(m.MessageBody(m.MessageBody.Count - 1))

    Fehler 2 "Option Strict On" lässt keine impliziten Konvertierungen von Object in String zu.
    und bei

    VB.NET-Quellcode

    1. Dim m As MIMEParser.Message = pop3.GetMessage(i)

    Fehler 1 Der Wert vom Typ "OpenPop.Mime.Message" kann nicht in "OpenPOP.MIMEParser.Message" konvertiert werden.

    wobei der Letzte Fehler erst seit der neuen OpenPop auftritt, die ich gerade kopiert habe (OpenPop.Net 2.0.4)
    Und was für einen Nutzen habe ich nun von

    VB.NET-Quellcode

    1. Option Strict On
    ?

    (ich habe [Allgemein] Option Strict On/Off? gelesen, sehe aber keinen Grund es einzuschalten, weil meine Frage nicht auf ein ein oder ausschalten von strict zurückzuführen ist)
    Ich kann die Option immer noch aktivieren, wenn das Programm ansonsten erstmal fehlerfrei ist und gucken wo gemeckert wird...


    @Dodo
    Danke für die Info ich habe mir dort auch wieder die neue Version gezogen und soweit geht auch alles, bis auf den besagten Fehler

    VB.NET-Quellcode

    1. Dim m As MIMEParser.Message = pop3.GetMessage(i)

    Fehler 1 Der Wert vom Typ "OpenPop.Mime.Message" kann nicht in "OpenPOP.MIMEParser.Message" konvertiert werden.
    Der Fehler tritt übrigens mit oder ohne Option Strict auf

    EDIT: mal etwas schöner gepostet


    EDIT: GELÖST !!!

    So muss der Code aussehen:

    VB.NET-Quellcode

    1. Dim pop3 As New POPClient
    2. pop3.Disconnect()
    3. pop3.Connect("mailadresse@provider.de", 995, useSsl:=True)
    4. pop3.Authenticate("Benutzername", "Passwort")
    5. ListBox1.Items.Clear()
    6. For i As Integer = 1 To pop3.GetMessageCount
    7. Dim m As MIMEParser.Message = pop3.GetMessage(i, False)
    8. My.Application.DoEvents()
    9. ListBox1.Items.Add("From: " & m.From & " <" & m.FromEmail & "> - " & m.Subject)
    10. If m.MessageBody.Count > 0 Then
    11. Dim Attach As New List(Of MIMEParser.Attachment)
    12. Messages.Add(m.MessageBody(m.MessageBody.Count - 1))
    13. For ii As Integer = 1 To m.AttachmentCount - 1
    14. Attach.Add(m.GetAttachment(ii))
    15. Next
    16. AttachArray.Add(Attach)
    17. End If
    18. ' pop3.DeleteMessage(i) ' Wenn die Message nach abholung gelöscht werden soll
    19. Next
    20. pop3.Disconnect()

    Dann werden die Daten in die Listboxen geschrieben ABER ich habe rumexperimentiert bis zum geht nicht mehr und siehe da, im Internet eine andere Version von OpenPop gefunden und damit geht es (siehe Anhang)
    Falls noch jemand so ein Problem haben sollte.
    Dateien
    • OpenPOP.dll

      (28,67 kB, 388 mal heruntergeladen, zuletzt: )
    • MIMEParser.dll

      (65,54 kB, 360 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „compufreak“ ()