Mail versenden und empfangen...

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Mail versenden und empfangen...

    Hallo, Ich wollte ein Programm machen das eine e-mail versendet... :D nur da komme ich nicht so weit :

    Quellcode

    1. Imports System.Net
    2. Imports System.Net.Mail
    3. Public Class Form1
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Dim myClient As New Net.Mail.SmtpClient("smtp.web.de")
    6. myClient.Credentials = New Net.NetworkCredential("Meine e-mail", "Mein Passwort")
    7. myClient.Send("Meine e-mail", "Die Empfänger e-mail", "überschrift", TextBox1.Text + vbNewLine + TextBox2.Text)
    8. End Sub
    9. End Class


    Der Fehler : Syntaxfehler in Parametern oder Argumenten. Die Serverantwort war: Keine Authentifizierung, oder POP3-Anmeldung zu weit in der Vergangenheit . / Authentification failed, or POP3 logon too old. ?(

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

    Wieso benutzt du nicht einfach mal die SuFu oder Onkel Google???? Dann wärst du schon seit Tagen am Ziel. Ein bisschen Eigeninitative ist schon erforderlich, sonst ist es dir ja auch nicht wichtig. Aber andere sollen dann für dich suchen :thumbdown: :thumbdown:

    Trotzdem, die SuFu würde dir folgendes bringen: [VB 2005] E-mails Empfangen

    lg
    Fehler 1 "Encoding" ist kein Member von "String". C:\Users\Marvin\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 89 32 WindowsApplication1
    Fehler 2 "Text" ist nicht eindeutig. Importiert aus den Namespaces oder Typen "System, System.Drawing". C:\Users\Marvin\AppData\Local\Temporary Projects\WindowsApplication1\Form1.vb 100 29 WindowsApplication1
    Schreib´s mal so:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. End Sub
    4. End Class
    5. Public Class Client
    6. Private Client As New Net.Sockets.TcpClient
    7. Private POP3Stream As Net.Sockets.NetworkStream
    8. Private Connected As Boolean = False
    9. '''<summary>
    10. '''Verbindungssatus abfragen.
    11. '''</summary>
    12. Public ReadOnly Property ConnectionEstablished() As Boolean
    13. Get
    14. Return Connected
    15. End Get
    16. End Property
    17. '''<summary>
    18. '''Nachrichten Klasse
    19. '''</summary>
    20. Public Class MessageList
    21. Public ID As Int64
    22. Public Size As Int64
    23. End Class
    24. '''<summary>
    25. '''Verfügbarer POP3 Befehlssatz.
    26. '''</summary>
    27. Private Class Commands
    28. Public Const Delete As String = "DELE "
    29. Public Const GetMessage As String = "RETR "
    30. Public Const List As String = "LIST"
    31. Public Const Password As String = "PASS "
    32. Public Const Quit As String = "QUIT"
    33. Public Const ServerConfirm As String = "+OK"
    34. Public Const ServerNoMoreData As String = "."
    35. Public Const User As String = "USER "
    36. End Class
    37. '''<summary>
    38. '''Stellt die Verbindung zum POP3-Server her.
    39. '''</summary>
    40. '''<param name="Server">Servername (subdomain.domain.tld)</param>
    41. '''<param name="User">Benutzername</param>
    42. '''<param name="Password">Passwort</param>
    43. Public Sub Connect(ByVal Server As String, ByVal User As String, ByVal Password As String)
    44. If Connected = True Then Me.Disconnect()
    45. Try
    46. Me.Client.Connect(Server, 110)
    47. Me.POP3Stream = Me.Client.GetStream
    48. Me.CheckResponse(Me.GetResponse)
    49. Me.Send(Commands.User + User)
    50. Me.CheckResponse(Me.GetResponse)
    51. Me.Send(Commands.Password + Password)
    52. Me.CheckResponse(Me.GetResponse)
    53. Me.Connected = True
    54. Catch ex As Exception
    55. Me.Disconnect()
    56. Throw New ApplicationException(ex.Message, ex)
    57. End Try
    58. End Sub
    59. '''<summary>
    60. '''Trennt die Verbindung zum POP3-Server her.
    61. '''</summary>
    62. Public Sub Disconnect()
    63. If Connected = True Then
    64. Me.Send(Commands.Quit)
    65. Me.CheckResponse(Me.GetResponse())
    66. Me.Connected = False
    67. Me.Client.Close()
    68. End If
    69. End Sub
    70. '''<summary>
    71. '''Sendet POP3 Befehl zum Server.
    72. '''</summary>
    73. '''<param name="Command">POP3 Befehl</param>
    74. Private Sub Send(ByVal Command As String)
    75. Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(Command & vbCrLf)
    76. Me.POP3Stream.Write(data, 0, data.Length)
    77. End Sub
    78. '''<summary>
    79. '''Empfängt Antwort auf Send-Befehl vom Server.
    80. '''</summary>
    81. Private Function GetResponse() As String
    82. Dim SR As New IO.StreamReader(Me.POP3Stream)
    83. Dim SBuilder As New System.Text.StringBuilder
    84. Do While SR.Peek > -1
    85. SBuilder.Append(SR.ReadLine + vbCr)
    86. Loop
    87. Return SBuilder.ToString
    88. End Function
    89. '''<summary>
    90. '''Prüft ob die erhalten Antwort von GetResponse gültig ist.
    91. '''</summary>
    92. '''<param name="Response">Antort von GetResponse</param>
    93. Private Sub CheckResponse(ByVal Response As String)
    94. If Not String.Compare(Response.Substring(0, 3), Commands.ServerConfirm, False, Globalization.CultureInfo.CurrentCulture) = 0 Then
    95. Me.Client.Close()
    96. Me.Connected = False
    97. Throw New ApplicationException("Response " + Response + " not expected.")
    98. End If
    99. End Sub
    100. '''<summary>
    101. '''Gibt eine List(of POP3Message) der verfügbaren Nachrichten zurück.
    102. '''</summary>
    103. Public Function GetMessageList() As List(Of MessageList)
    104. If Me.Connected = False Then
    105. Throw New InvalidOperationException("Not connected!")
    106. End If
    107. Dim Pop3l As New List(Of MessageList)
    108. Me.Send(Commands.List)
    109. Dim Response() As String = Me.GetResponse.Split(vbCrLf)
    110. CheckResponse(Response(0))
    111. For i As Integer = 1 To Response.Length - 3
    112. Dim POP3m As New MessageList
    113. POP3m.ID = i
    114. POP3m.Size = Convert.ToInt64(Response(i).Split(" ")(1))
    115. Pop3l.Add(POP3m)
    116. Next
    117. Return Pop3l
    118. End Function
    119. '''<summary>
    120. '''Nachricht mit angebener Nummer vom Server lesen
    121. '''</summary>
    122. '''<param name="MessageID">MessageID</param>
    123. Public Function GetMessage(ByVal MessageID As Integer) As String
    124. If Me.Connected = False Then
    125. Throw New InvalidOperationException("Not connected!")
    126. End If
    127. Me.Send(Commands.GetMessage & MessageID)
    128. Me.CheckResponse(Me.GetResponse)
    129. Dim Response As String = Me.GetResponse
    130. Return Response
    131. End Function
    132. End Class

    lg
    und wo gebe ich den Servernamen an?

    was bedeutet:

    VB.NET-Quellcode

    1. '''<summary>
    2. '''Stellt die Verbindung zum POP3-Server her.
    3. '''</summary>
    4. '''<param name="Server">Servername (subdomain.domain.tld)</param>
    5. '''<param name="User">Benutzername</param>
    6. '''<param name="Password">Passwort</param>

    was bedeutet:

    Nennt sich Kommentar. Richtige Programmierer brauchen sowas nicht. Haben irgendwelche Warmduscher erfunden.

    ...

    ...

    Da steht, was die Funktion macht und außerdem welche Parameter sie erwartet und was diese bedeuten. Somit kann dann jeder ohne viel Nachdenken die Funktion verwenden.
    Ja das sind Kommentare, damit man nach etlichen Jahren noch weiß, was man gemacht hat und es nachvollziehen kann... manchmal ganz sinnvoll, wenn es schon eine Weile her ist ^^


    Ich bin ja mit ähnlichem Problem konfrontiert und derzeit beschäftigt... Ich habe das PW und den User jetzt so angelegt, ist das sinnvoll so?
    Dazu muss ich sagen, dass ich ziemlicher Noobie bin! ;)


    VB.NET-Quellcode

    1. '''<summary>
    2. '''Verfügbarer POP3 Befehlssatz.
    3. '''</summary>
    4. Private Class Commands
    5. Public Const Delete As String = "DELE "
    6. Public Const GetMessage As String = "RETR "
    7. Public Const List As String = "LIST"
    8. Public Const Password As String = "PASS "
    9. Public Const Quit As String = "QUIT"
    10. Public Const ServerConfirm As String = "+OK"
    11. Public Const ServerNoMoreData As String = "."
    12. Public Const User As String = "USER "
    13. End Class
    14. '''<summary>
    15. '''Stellt die Verbindung zum POP3-Server her.
    16. '''</summary>
    17. '''<param name="Server">Servername (subdomain.domain.tld)</param>
    18. '''<param name="User">Benutzername</param>
    19. '''<param name="Password">Passwort</param>
    20. Public Sub Connect(ByVal Server As String, ByVal User As String, ByVal Password As String)
    21. Dim User1 As String = "test"
    22. Dim Password1 As String = "test"
    23. Dim Server1 As String = "pop.test.de"
    24. If Connected = True Then Me.Disconnect()
    25. Try
    26. Me.Client.Connect(Server1, 110)
    27. Me.POP3Stream = Me.Client.GetStream
    28. Me.CheckResponse(Me.GetResponse)
    29. Me.Send(Commands.User + User1)
    30. Me.CheckResponse(Me.GetResponse)
    31. Me.Send(Commands.Password + Password1)
    32. Me.CheckResponse(Me.GetResponse)
    33. Me.Connected = True
    34. Catch ex As Exception
    35. Me.Disconnect()
    36. Throw New ApplicationException(ex.Message, ex)
    37. End Try
    38. End Sub




    Vielen Dank für jede Antwort! Wäre wichtig ^^