Huhu ihr
ich würde gerne per Klick auf einen Button E-Mails eines bestimmten Kontos abrufen lassen.
Mein Code:
Aber bei dem Convert (Zeile 138) bekomme ich folgende Meldung:
Fehler bei der Überladungsauflösung, da keine zugreifbare "Convert" diese Anzahl von Argumenten akzeptiert.
Wie kann ich das beheben, bzw. kennt jemand eine bessere Lösung ?
ich würde gerne per Klick auf einen Button E-Mails eines bestimmten Kontos abrufen lassen.
Mein Code:
VB.NET-Quellcode
- Imports System.Text.Encoding
- Public Class Client
- Private Client As New Net.Sockets.TcpClient
- Private POP3Stream As Net.Sockets.NetworkStream
- Private Connected As Boolean = False
- '''<summary>
- '''Verbindungssatus abfragen.
- '''</summary>
- Public ReadOnly Property ConnectionEstablished() As Boolean
- Get
- Return Connected
- End Get
- End Property
- '''<summary>
- '''Nachrichten Klasse
- '''</summary>
- Public Class MessageList
- Public ID As Int64
- Public Size As Int64
- End Class
- '''<summary>
- '''Verfügbarer POP3 Befehlssatz.
- '''</summary>
- Private Class Commands
- Public Const Delete As String = "DELE "
- Public Const GetMessage As String = "RETR "
- Public Const List As String = "LIST"
- Public Const Password As String = "PASS "
- Public Const Quit As String = "QUIT"
- Public Const ServerConfirm As String = "+OK"
- Public Const ServerNoMoreData As String = "."
- Public Const User As String = "USER "
- End Class
- '''<summary>
- '''Stellt die Verbindung zum POP3-Server her.
- '''</summary>
- '''<param name="Server">Servername (subdomain.domain.tld)</param>
- '''<param name="User">Benutzername</param>
- '''<param name="Password">Passwort</param>
- Public Sub Connect(ByVal Server As String, ByVal User As String, ByVal Password As String)
- If Connected = True Then Me.Disconnect()
- Try
- Me.Client.Connect(Server, 110)
- Me.POP3Stream = Me.Client.GetStream
- Me.CheckResponse(Me.GetResponse)
- Me.Send(Commands.User + User)
- Me.CheckResponse(Me.GetResponse)
- Me.Send(Commands.Password + Password)
- Me.CheckResponse(Me.GetResponse)
- Me.Connected = True
- Catch ex As Exception
- Me.Disconnect()
- Throw New ApplicationException(ex.Message, ex)
- End Try
- End Sub
- '''<summary>
- '''Trennt die Verbindung zum POP3-Server her.
- '''</summary>
- Public Sub Disconnect()
- If Connected = True Then
- Me.Send(Commands.Quit)
- Me.CheckResponse(Me.GetResponse())
- Me.Connected = False
- Me.Client.Close()
- End If
- End Sub
- '''<summary>
- '''Sendet POP3 Befehl zum Server.
- '''</summary>
- '''<param name="Command">POP3 Befehl</param>
- Private Sub Send(ByVal Command As String)
- Dim data As [Byte]() = ASCII.GetBytes(Command & vbCrLf)
- Me.POP3Stream.Write(data, 0, data.Length)
- End Sub
- '''<summary>
- '''Empfängt Antwort auf Send-Befehl vom Server.
- '''</summary>
- Private Function GetResponse() As String
- Dim SR As New IO.StreamReader(Me.POP3Stream)
- Dim SBuilder As New System.Text.StringBuilder
- Do While SR.Peek > -1
- SBuilder.Append(SR.ReadLine + vbCr)
- Loop
- Return SBuilder.ToString
- End Function
- '''<summary>
- '''Prüft ob die erhalten Antwort von GetResponse gültig ist.
- '''</summary>
- '''<param name="Response">Antort von GetResponse</param>
- Private Sub CheckResponse(ByVal Response As String)
- If Not String.Compare(Response.Substring(0, 3), Commands.ServerConfirm, False, Globalization.CultureInfo.CurrentCulture) = 0 Then
- Me.Client.Close()
- Me.Connected = False
- Throw New ApplicationException("Response " + Response + " not expected.")
- End If
- End Sub
- '''<summary>
- '''Gibt eine List(of POP3Message) der verfügbaren Nachrichten zurück.
- '''</summary>
- Public Function GetMessageList() As List(Of MessageList)
- If Me.Connected = False Then
- Throw New InvalidOperationException("Not connected!")
- End If
- Dim Pop3l As New List(Of MessageList)
- Me.Send(Commands.List)
- Dim Response() As String = Me.GetResponse.Split(vbCrLf)
- CheckResponse(Response(0))
- For i As Integer = 1 To Response.Length - 3
- Dim POP3m As New MessageList
- POP3m.ID = i
- POP3m.Size = Convert.ToInt64(Response(i).Split(" ")(1))
- Pop3l.Add(POP3m)
- Next
- Return Pop3l
- End Function
- '''<summary>
- '''Nachricht mit angebener Nummer vom Server lesen
- '''</summary>
- '''<param name="MessageID">MessageID</param>
- Public Function GetMessage(ByVal MessageID As Integer) As String
- If Me.Connected = False Then
- Throw New InvalidOperationException("Not connected!")
- End If
- Me.Send(Commands.GetMessage & MessageID)
- Me.CheckResponse(Me.GetResponse)
- Dim Response As String = Me.GetResponse
- Return Response
- End Function
- End Class
Aber bei dem Convert (Zeile 138) bekomme ich folgende Meldung:
Fehler bei der Überladungsauflösung, da keine zugreifbare "Convert" diese Anzahl von Argumenten akzeptiert.
Wie kann ich das beheben, bzw. kennt jemand eine bessere Lösung ?
"Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero
Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!