E-Mail in VB Fehler

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Annoxoli.

    E-Mail in VB Fehler

    Hi,
    Was ist an diesem Quellcode falsch?


    VB.NET-Quellcode

    1. >Private Sub Mail_Send()
    2. Dim SmtpServer As New SmtpClient()
    3. Dim mail As New MailMessage()
    4. SmtpServer.Credentials = New _
    5. Net.NetworkCredential("mail@example.com", "<Passwort>")
    6. SmtpServer.Port = 587
    7. SmtpServer.Host = "smtp.live.com"
    8. mail = New MailMessage()
    9. mail.From = New MailAddress("mail@example.com")
    10. mail.To.Add("mail@example.com")
    11. mail.Subject = "Umfrage Ergebnis"
    12. mail.Body = "Name:" & Form1.TextBox1.Text & " " & "Alter:" & Form1.TextBox1.Text & " " & "Punkte für Server:" & Servervote & " " & "Veränderungen:" & Serveränderungen & " " & "Sollte Griefing verboten werden?" & Griefing & " " & "Negativ aufgefallene Spieler:" & Negative_Spieler + " " & "Änderungen am Regelwerk:" & Rule_Change + " " & "Service Änderungen?" & Service & " " & "Öffentliche Gebäude:" & Open_Buildings & " " & "Anderer Service:" & Other_Action
    13. SmtpServer.Send(mail)
    14. End Sub
    15. End Class

    Wenn dieser Code abgerufen wird, Kommt der Fehler, Das SMTP-Exception
    nicht behandelt wurde und eine Sichere Verbindung erforderlich ist. Was
    ist falsch? Wie ist der richtige Quellcode?
    ;(


    Edit by Manschula: Thema verschoben

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

    VB.NET-Quellcode

    1. mail = New MailMessage()


    wieso nochmals neu Instanzieren? Hast doch oben mail eine neue Instanz zugewiesen bei der Deklaration.

    Ansonstne könnte es der Port sein, 587 is STARTTLS.
    Nutze mal den normalen SMTP Port 25
    Hi, der code sollte auf jeden fall funktionieren.

    viel spaß:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Net.Mail
    3. Imports System.Security.Cryptography.X509Certificates
    4. Public Function SendEmailToUser(ByVal GetUserEmailAdress As String) As Boolean
    5. Dim Msg As New System.Net.Mail.MailMessage
    6. Dim oCertOverride As New CertificateOverride
    7. Dim mySmtpsvr As New SmtpClient()
    8. Msg.IsBodyHtml = False
    9. ServicePointManager.ServerCertificateValidationCallback = AddressOf oCertOverride.RemoteCertificateValidationCallback
    10. mySmtpsvr.Host = "smtp.googlemail.com"
    11. mySmtpsvr.Port = 587
    12. mySmtpsvr.UseDefaultCredentials = False
    13. mySmtpsvr.Credentials = New NetworkCredential("<MAIL>", "<PW>")
    14. mySmtpsvr.TargetName = "" ' Welchen Betreff die E-Mail hat
    15. mySmtpsvr.EnableSsl = True
    16. Msg.From = New MailAddress("<MAIL>") ' Von wem die E-Mail kommt
    17. Msg.To.Add("<MAIL>") ' Wo die E-Mail hingehen soll
    18. Msg.Subject = "<Titel>"
    19. Msg.Body = "<DEINTEXT>"
    20. Try
    21. mySmtpsvr.Send(Msg) 'E-Mail wird gesendet
    22. Return (True)
    23. Catch ex As Exception
    24. Return (False) ' Wenn etwas nicht Funktioniert hat
    25. End Try
    26. End Function
    27. End Class
    28. Public Class CertificateOverride
    29. Public Function RemoteCertificateValidationCallback(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean
    30. Return True
    31. End Function


    du solltest die ports etc. natürlich an deinen webserver anpassen

    Dodo schrieb:

    VB.NET-Quellcode

    1. mail = New MailMessage()


    wieso nochmals neu Instanzieren? Hast doch oben mail eine neue Instanz zugewiesen bei der Deklaration.

    Ansonstne könnte es der Port sein, 587 is STARTTLS.
    Nutze mal den normalen SMTP Port 25
    Hilft auch nix... Hoffentlich hat irgendwer mal ne AW die hilft.. -.-

    joeyyeah schrieb:

    Hilft garnix...

    Na aber genau DAS macht eine sichere Verbindung.
    Dann hast du vielleicht noch woanders einen Fehler.

    lg

    EDIT:
    Ach ja nochwas:
    DU hast hier innerhalb 10 Minuten mehrere Möglichkeiten bekommen.
    Und dann als Antwort "Hilft auch nix... Hoffentlich hat irgendwer mal ne AW die hilft.. -.- " zu geben kotzt an.
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    Ich mache s immer kurz und knapp und hab nie Probleme damit!

    VB.NET-Quellcode

    1. Dim myClient As New Net.Mail.SmtpClient("smtp.anbieter.net")
    2. myClient.Credentials = New Net.NetworkCredential("Username", "Passwort")
    3. myClient.Send("Meine Email", "ZielEmail", "Betreff", "zusendender Text")

    Annoxoli schrieb:

    Hi, der code sollte auf jeden fall funktionieren.

    viel spaß:

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Net.Mail
    3. Imports System.Security.Cryptography.X509Certificates
    4. Public Function SendEmailToUser(ByVal GetUserEmailAdress As String) As Boolean
    5. Dim Msg As New System.Net.Mail.MailMessage
    6. Dim oCertOverride As New CertificateOverride
    7. Dim mySmtpsvr As New SmtpClient()
    8. Msg.IsBodyHtml = False
    9. ServicePointManager.ServerCertificateValidationCallback = AddressOf oCertOverride.RemoteCertificateValidationCallback
    10. mySmtpsvr.Host = "smtp.googlemail.com"
    11. mySmtpsvr.Port = 587
    12. mySmtpsvr.UseDefaultCredentials = False
    13. mySmtpsvr.Credentials = New NetworkCredential("", "")
    14. mySmtpsvr.TargetName = "" ' Welchen Betreff die E-Mail hat
    15. mySmtpsvr.EnableSsl = True
    16. Msg.From = New MailAddress("") ' Von wem die E-Mail kommt
    17. Msg.To.Add("") ' Wo die E-Mail hingehen soll
    18. Msg.Subject = ""
    19. Msg.Body = ""
    20. Try
    21. mySmtpsvr.Send(Msg) 'E-Mail wird gesendet
    22. Return (True)
    23. Catch ex As Exception
    24. Return (False) ' Wenn etwas nicht Funktioniert hat
    25. End Try
    26. End Function
    27. End Class
    28. Public Class CertificateOverride
    29. Public Function RemoteCertificateValidationCallback(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean
    30. Return True
    31. End Function


    du solltest die ports etc. natürlich an deinen webserver anpassen</pw>

    Vllt. ist das jetzt ne Dumme Frage aber wie kann ich den Code dann abrufen?
    So hab mal nachgesehn, also mail.live.com nutzen nur Port 587 und TLS/SSH und da wird sicherlich auch ein Zertifikat beantragt und da hilft nur auf SSH stellen in der Tat nichts, sondern man muss den Callback der das Zertifikat bestätigt abhandeln und das mancht der code von Annoxoli. Also wenn der nicht funktioniert, machst du was falsch.

    Edit:

    joeyyeah schrieb:

    Vllt. ist das jetzt ne Dumme Frage aber wie kann ich den Code dann abrufen?


    In der tat eine dumme Frage, wie man eine Funktion aufruft sollte mindestens zu den Grundlagen gehören

    VB.NET-Quellcode

    1. If SendEmailToUser("mail@example.com") Then
    2. MsgBox("E-Mail erfolgreich gesendet")
    3. Else
    4. MsgBox("E-Mail nicht gesendet")
    5. End If

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

    ah sry.. sehe grade da ist noch ein parameter drin...

    VB.NET-Quellcode

    1. Imports System.Net
    2. Imports System.Net.Mail
    3. Imports System.Security.Cryptography.X509Certificates
    4. Public Function SendEmailToUser() As Boolean
    5. Dim Msg As New System.Net.Mail.MailMessage
    6. Dim oCertOverride As New CertificateOverride
    7. Dim mySmtpsvr As New SmtpClient()
    8. Msg.IsBodyHtml = False
    9. ServicePointManager.ServerCertificateValidationCallback = AddressOf oCertOverride.RemoteCertificateValidationCallback
    10. mySmtpsvr.Host = "smtp.googlemail.com"
    11. mySmtpsvr.Port = 587
    12. mySmtpsvr.UseDefaultCredentials = False
    13. mySmtpsvr.Credentials = New NetworkCredential("", "")
    14. mySmtpsvr.TargetName = "" ' Welchen Betreff die E-Mail hat
    15. mySmtpsvr.EnableSsl = True
    16. Msg.From = New MailAddress("") ' Von wem die E-Mail kommt
    17. Msg.To.Add("") ' Wo die E-Mail hingehen soll
    18. Msg.Subject = ""
    19. Msg.Body = ""
    20. Try
    21. mySmtpsvr.Send(Msg) 'E-Mail wird gesendet
    22. Return (True)
    23. Catch ex As Exception
    24. Return (False) ' Wenn etwas nicht Funktioniert hat
    25. End Try
    26. End Function
    27. End Class
    28. Public Class CertificateOverride
    29. Public Function RemoteCertificateValidationCallback(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean
    30. Return True
    31. End Function


    aufrufen mit:

    VB.NET-Quellcode

    1. SendEmailToUser()