E-Mail Empfang über POP3 mit SSL

    • VB.NET

    Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von KidRick.

      E-Mail Empfang über POP3 mit SSL

      Heyho Com,

      da im anderen Thread von E-Mail-Empfang es ein neueres Projekt Namens OpenPop.NET gibt und Manche dort nicht weiter kamen mach ich jetzt diesen Thread auf wo ich mir die Zeit genommen habe den C#-Code von der WebSite in VB.NET zu übersetzen und zu verstehen und erklären.

      Hier zum Download des neuen OpenPop.NET: OpenPop.NET

      ERSTMAL !:

      VB.NET-Quellcode

      1. Option Strict On
      2. Imports OpenPop.Mime
      3. Imports OpenPop.Mime.Header
      4. Imports OpenPop.Pop3
      5. Imports OpenPop.Pop3.Exceptions
      6. Imports OpenPop.Common.Logging
      7. Imports Message = OpenPop.Mime.Message


      Alle E-Mails vom Server empfangen:

      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


      So zur Erklärung:
      Diese Funktion ruft alle Mails vom Server ab.
      client.Connect verbindet sich mit dem Server und dem Port des Anbieters und benutzt dabei SSL !
      client.Authenticate überprüft das Konto des Users mit dem Server.
      messageCount ruft die Anzahl der Nachrichten ab.Die kann auch in einem Label wiedergegeben werden.
      allMessages lädt alle vorhandenen Nachrichten herunter.


      Eine E-Mail auf dem Server löschen:

      VB.NET-Quellcode

      1. Public Shared Sub DeleteMessageOnServer(hostname As String, port As Integer, useSsl As Boolean, username As String, password As String, messageNumber As Integer)
      2. Using client As New Pop3Client()
      3. client.Connect(hostname, port, useSsl)
      4. client.Authenticate(username, password)
      5. client.DeleteMessage(messageNumber)
      6. End Using
      7. End Sub


      So Erklärung:
      client wird als neuer Pop3Client genutzt.
      client.Connect verbindet uns wieder mit dem Server und dem Port und nutzt natürlich wieder SSL.
      client.Authenticate steht mal wieder für unseren Nutzernamen und unser Passwort.
      client.DeleteMessage und messageNumber stehen dafür das die Mail mit zum Beispiel der Nummer 1 gelöscht wird.
      WAS NOCH ZU BEACHTEN IST !
      Am Ende dieses Vorgangs sollte die Disconnect() - Methode aufgerufen werden sonst wird die Nachricht nicht gelöscht !

      Speichern und Laden von Mails:

      VB.NET-Quellcode

      1. Public Shared Function SaveAndLoadFullMessage(message As Message) As Message
      2. Dim file As New FileInfo("someFile.eml")
      3. message.Save(file)
      4. Dim loadedMessage As Message = Message.Load(file)
      5. Return loadedMessage
      6. End Function


      file ist die Dateiinfo der zu ladenden/speichernden Datei.
      message.Save(file) speichert die Komplette Mail.
      loadedMessage ist das Laden einer Nachricht.DIES KANN AUCH SPÄTER BENUTZT WERDEN !
      Return loadedMessage nutzt die Mail nochmal.

      Für weiter Infos und Beispiele besucht folgende Seite (alles in C#): OpenPop.NET Examples

      Ich hoffe ich konnte ein bisschen Helfen !

      Gruß iEi


      Beispielaufruf:

      VB.NET-Quellcode

      1. FetchAllMessages("pop3.live.com", 995, True, "maxmustermann@outlook.com", "abc123")


      oder auch

      VB.NET-Quellcode

      1. FetchAllMessages("pop3.live.com", 995, True, UserMail.Text, UserPsw.Text)


      P.S: Ich werde demnächst eine kleine DLL für die Funktionen bereit stellen ;)

      Edit by hal2000:
      - Überflüssige Leerzeilen entfernt, Topic verschoben.

      Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „iEi“ () aus folgendem Grund: Beispielaufruf hinzugefügt

      Deinen Code werde ich mir demnächst mal anschauen. Bin gerade selbst am Überlegen ein "sicheres" E-Mail Programm zu schreiben.

      Hier nur ein Tipp am Rande.
      Dein neuer Avatar ist ganz schön allerdings gehört der auch zum Mozilla-Thunderbird.
      Falls du vor hast einen eigenen Emailclient zu schreiben würde ich ein anderes Logo verwenden.
      There is no CLOUD - just other people's computers

      Q: Why do JAVA developers wear glasses?
      A: Because they can't C#

      Daily prayer:
      "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
      Naja ist schon ziemlich lang her das ich den Code geschrieben habe, bin selber gar nicht mehr in .NET unterwegs. Wer will kann sich meinen damaligen Email-Client anschauen:
      ThunderMail 0.6.001 - DER federleichte E-Mail-Client für Windows [Mini-Update vom 18.08.13]
      Könnt ihr gern mit ILSpy dekompilieren, da hab ich das auch benutzt und das mit der RichTextBox/TextBox etc. müsste da auch drin sein ;)
      Software being "Done" is like lawn being "Mowed". (Jim Benson)