E-Mail senden Fehler

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Thias.

    E-Mail senden Fehler

    Hallo Miteinander

    Heute hab ich mit Hilfe eines Youtube Videos versucht mit VB eine E-Mail versenden zu lassen.
    Das will aber nicht so ganz wie ich will und ich sehe auch gerade nicht wie ich den fehler beheben kann.
    (Ich muss dazu sagen, dass ich erst noch ein in der Welt des Programmierens bin)

    Hier der Code:

    Visual Basic-Quellcode

    1. Imports System.Net.Mail
    2. Imports System.Net
    3. Public Class Form1
    4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    5. Dim NeueNachricht As MailMessage
    6. Try
    7. NeueNachricht.From = New MailAddress(TextBox1.Text)[b]
    8. 'Hier ist der Fehler: "Die NeueNachricht variable wird verwendet, bevor ihr ein Wert zugewiesen wird.
    9. NeueNachricht.To.Add(EMail.Text)
    10. NeueNachricht.Subject = "New Account"
    11. NeueNachricht.Body = "Willkommen " + Username.Text + ". Dein Username ist : " + Username.Text + ". Dein Password ist : " + Password.Text
    12. Catch ex As Exception
    13. Call MsgBox("Sendevorgang fehlgeschlagen!", MsgBoxStyle.Critical, "Error")
    14. End Try

    Bin noch neu in diesem Forum. Wenn ich was falsch gemacht habe einfach einen kleine Hinweiß geben ^^ danke

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „BraunBrot“ ()

    Anbei der benötigte Hinweis:

    VB.NET-Quellcode

    1. Dim NeueNachricht As New MailMessage

    Das "New" fehlte!

    So sollte Dein Code hier aussehen, wenn Du einen Beitrag schreibst:

    VB.NET-Quellcode

    1. Private Sub Button1_Click_1(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    2. Dim NeueNachricht As New MailMessage
    3. Try
    4. NeueNachricht.From = New MailAddress(TextBox1.Text) 'Hier ist der Fehler: "Die NeueNachricht variable wird verwendet, bevor ihr ein Wert zugewiesen wird.
    5. NeueNachricht.To.Add(EMail.Text)
    6. NeueNachricht.Subject = "New Account"
    7. NeueNachricht.Body = "Willkommen " + Username.Text + ". Dein Username ist : " + Username.Text + ". Dein Password ist : " + Password.Text
    8. Catch ex As Exception
    9. Call MsgBox("Sendevorgang fehlgeschlagen!", MsgBoxStyle.Critical, "Error")
    10. End Try
    11. End Sub

    Hier die Anleitung, wie man Code richtig postet: [Forum] Wie füge ich Quellcode korrekt im Forum ein?

    Hast Du Dir zudem schon folgendes angeschaut? Visual Studio - Empfohlene Einstellungen

    Und herzlich willkommen im Forum!

    Edit: Ist es klug Benutzername und Passwort innerhalb einer E-Mail zu verschicken?

    Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „Thias“ ()

    Danke für deine vielen Tipps :thumbsup:

    Das mit der E-Mail und Passwort Geschichte muss ich noch überarbeiten. Da hast du recht

    Edit: Das mit dem Code hab ich zwar jetzt hinbekommen, aber das sieht ganz schön grausig aus :/
    Edit Edit: Es wird keine E-Mail gesendet ?( weiß nicht mehr was ich noch falsch hab

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

    Da fehlt noch der SMTP-Server über den Du die E-Mail verschicken willst und zusätzlich noch die Anmeldung an diesem SMTP-Server.

    Schau Dir mal bitte folgendes an: E-Mail senden per SMTP (Simple Mail Transfer Protocol)

    Passe Deinen Code bitte entsprechend an und wenn dann noch Probleme auftauchen, dann bitte wiederum Deinen Code hier posten und wir versuchen dann evtl. Fehler zu beheben

    Edit: Viele E-Mail-Anbieter verlangen aber heutzutage eine verschlüsselte Verbindung, dann wird es noch komplexer! Siehe z.B. wie folgt: E-Mail in VB Fehler

    Ports etc. natürlich an Deinen E-Mail-Anbieter anpassen - so wie Du Dein E-Mail-Konto in dem von Dir zu Hause benutzten E-Mail-Programm angelegt hast.

    Über welchen E-Mail-Anbieter willst Du denn versenden?

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „Thias“ ()

    Hier mein ganzer Code:

    Visual Basic-Quellcode

    1. Dim NeueNachricht As New MailMessage
    2. Try
    3. NeueNachricht.From = New MailAddress("meineEmail@web.de")
    4. NeueNachricht.To.Add(EMail.Text)
    5. NeueNachricht.Subject = "New Account"
    6. NeueNachricht.Body = "Willkommen " + Username.Text + ". Dein Username ist : " + Username.Text + ". Dein Password ist : " + Password.Text
    7. Dim smtp As New SmtpClient("smtp.web.de")
    8. smtp.Port = 587
    9. smtp.EnableSsl = True
    10. smtp.Credentials = New System.Net.NetworkCredential("meineEmail@web.de", "meinPasswort")
    11. smtp.Send(NeueNachricht)
    12. Catch ex As Exception
    13. Call MsgBox("Sendevorgang fehlgeschlagen!", MsgBoxStyle.Critical, "Error")
    14. GoTo Hauptmenu
    15. End Try

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

    Nochmals der Hinweis auf: [Forum] Wie füge ich Quellcode korrekt im Forum ein?

    Einfach beim Posten den Code markieren und in der Sysmbolleiste auf VB.Net klicken!

    Aber - funktioniert es denn jetzt so oder kommt noch ein Fehler?

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim NeueNachricht As New MailMessage
    2. Try
    3. NeueNachricht.From = New MailAddress("meineEmail@web.de")
    4. NeueNachricht.To.Add(EMail.Text)
    5. NeueNachricht.Subject = "New Account"
    6. NeueNachricht.Body = "Willkommen " + Username.Text + ". Dein Username ist : " + Username.Text + ". Dein Password ist : " + Password.Text
    7. Dim smtp As New SmtpClient("smtp.web.de")
    8. smtp.Port = 587
    9. smtp.EnableSsl = True
    10. smtp.Credentials = New System.Net.NetworkCredential("meineEmail@web.de", "meinPasswort")
    11. smtp.Send(NeueNachricht)
    12. Catch ex As Exception
    13. Call MsgBox("Sendevorgang fehlgeschlagen!", MsgBoxStyle.Critical, "Error")
    14. GoTo Hauptmenu
    15. End Try

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

    Visual Basic-Quellcode

    1. Dim Msg As New MailMessage
    2. Dim myCredentials As New System.Net.NetworkCredential
    3. myCredentials.UserName = "Email@web.de"
    4. myCredentials.Password = "Passwort"
    5. Msg.IsBodyHtml = False
    6. Dim mySmtpsvr As New SmtpClient()
    7. mySmtpsvr.Host = "smtp.web.de"
    8. mySmtpsvr.Port = 25
    9. mySmtpsvr.UseDefaultCredentials = False
    10. mySmtpsvr.Credentials = myCredentials
    11. Try
    12. Msg.From = New MailAddress("Email@web.de")
    13. Msg.To.Add(EMail.Text)
    14. Msg.Subject = "Willkommen neuer Benutzer"
    15. Msg.Body = "Willkommen " + Username.Text + ". Dein Username ist : " + Username.Text + ". Dein Password ist : " + Password.Text
    16. mySmtpsvr.Send(Msg)
    17. MsgBox("Account created", MsgBoxStyle.Information, "Ok")
    18. Catch ex As Exception
    19. MsgBox(Err.Number & ex.Message & ex.StackTrace.ToString) 'Falls ein Fehler auftritt wird eine MsgBox angezeigt
    20. End Try

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „BraunBrot“ ()

    Habe nochmal einen anderen Code gefunden.
    Funktioniert leider immer noch nicht
    Dafür hab ich das mit dem Code im Forum hinbekommen :D

    Neuer Code:

    Visual Basic-Quellcode

    1. Public Function SendEmailToUser(ByVal GetUserEmailAdress As String) As Boolean
    2. Dim Msg As New System.Net.Mail.MailMessage
    3. Dim oCertOverride As New CertificateOverride
    4. Dim mySmtpsvr As New SmtpClient()
    5. Msg.IsBodyHtml = False
    6. ServicePointManager.ServerCertificateValidationCallback = AddressOf oCertOverride.RemoteCertificateValidationCallback
    7. mySmtpsvr.Host = "smtp.web.de"
    8. mySmtpsvr.Port = 587
    9. mySmtpsvr.UseDefaultCredentials = False
    10. mySmtpsvr.Credentials = New NetworkCredential("Email@web.de", "Passwort")
    11. mySmtpsvr.TargetName = "Neuer Nutzer" ' Welchen Betreff die E-Mail hat
    12. mySmtpsvr.EnableSsl = True
    13. Msg.From = New MailAddress("Email@web.de") ' Von wem die E-Mail kommt
    14. Msg.To.Add(EMail.Text) ' Wo die E-Mail hingehen soll
    15. Msg.Subject = "Neuer Nutzer"
    16. Msg.Body = "Hello World"
    17. Try
    18. mySmtpsvr.Send(Msg) 'E-Mail wird gesendet
    19. Return (True)
    20. Catch ex As Exception
    21. Return (False) ' Wenn etwas nicht Funktioniert hat
    22. End Try
    23. End Function


    Visual Basic-Quellcode

    1. Public Class CertificateOverride
    2. Public Function RemoteCertificateValidationCallback(ByVal sender As Object, ByVal certificate As X509Certificate, ByVal chain As X509Chain, ByVal sslPolicyErrors As Net.Security.SslPolicyErrors) As Boolean
    3. Return True
    4. End Function
    5. End Class


    Visual Basic-Quellcode

    1. Public Class Form2
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. If SendEmailToUser(EMail.Text) Then
    4. MsgBox("E-Mail erfolgreich gesendet")
    5. Else
    6. MsgBox("E-Mail nicht gesendet")
    7. End If
    8. End Sub
    9. End Class

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

    Mit welchem Code? Funktioniert doch jetzt oder nicht?

    Dafür hab ich das mit dem Code im Forum hinbekommen


    Sofern es nichts mehr mit dem E-Mail-Problem zu tun hat - neues Thema eröffnen!

    Oder gibt es beim E-Mail-Code noch Verständnis-Fragen?

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

    Wie wäre es denn, wenn du dir aus dem Try Catch mal die Exception ausgeben lässt und uns sagst was er meckert? ;)

    VB.NET-Quellcode

    1. ....
    2. Try
    3. mySmtpsvr.Send(Msg) 'E-Mail wird gesendet
    4. Return (True)
    5. Catch ex As Exception
    6. Return (False) ' Wenn etwas nicht Funktioniert hat
    7. ...
    Warum denn Try-Catch? Die IDE meldet die Exception doch am Besten.
    Alles andere irgendwie auszugeben, ist beim Debuggen Unsinn.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: