Fehler im Code

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Fehler im Code

    Hallo,
    Ich habe ein Programm geschrieben das mir eine E-Mail schicken soll wenn der PC ein und ausgeschaltet wird,
    aber es funktioniert nicht richtig. Beim Start erhalte ich gar keine E-Mail und wenn ich das Programm schließe
    dann hängt es sich auf und sendet unendlich viele E-Mails. Könnt ihr mir sagen wo der Fehler liegt?
    Hier ist der Code:

    VB.NET-Quellcode

    1. Imports System.Net.MailPublic Class Form1 Private Sub generateautostart(ByVal AppNameWithoutDotExe As String) If IO.File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.Startup) & "\" & AppNameWithoutDotExe & ".exe") Then
    2. Else My.Computer.FileSystem.CopyFile(AppNameWithoutDotExe & ".exe", Environment.GetFolderPath(Environment.SpecialFolder.Startup & "\" & ".exe")) End If End Sub
    3. Private Sub SendeMail(ByVal Empfaenger As String, ByVal Betreff As String, ByVal Text As String) Dim email As New MailMessage email.From = New MailAddress("absender@web.de", "Name") email.To.Add(Empfaenger) email.Subject = Betreff email.Body = Text
    4. Dim smtpsenden As New SmtpClient("smtp.web.de") smtpsenden.Port = 25 smtpsenden.EnableSsl = True smtpsenden.Credentials = New System.Net.NetworkCredential("benutzername", "Passwort") smtpsenden.Send(email) End Sub
    5. Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Do SendeMail("Empfänger@web.de", "Betreff", "" + "text" & vbNewLine + "Enddatum: " + My.Computer.Clock.LocalTime.Date & vbNewLine & "Endzeit " + My.Computer.Clock.LocalTime) My.Settings.gesendet = "gesendet" Loop Until My.Settings.gesendet = "gesendet" My.Settings.gesendet = "nicht gesendet" My.Settings.Startdatum = Nothing My.Settings.Startzeit = Nothing Me.Close() End Sub
    6. Private Sub Form1_Load(sender As Object, e As System.EventArgs) Handles Me.Load generateautostart("Test") My.Settings.gesendet = "nicht gesendet" My.Settings.Startdatum = My.Computer.Clock.LocalTime.Date My.Settings.Startzeit = My.Computer.Clock.LocalTime Do
    7. SendeMail("empfänger@web.de", "text", "" + "text" & vbNewLine + "Startdatum: " + My.Settings.Startdatum & vbNewLine & "Startzeit " + My.Settings.Startzeit) My.Settings.gesendet = "gesendet"
    8. Loop Until My.Settings.gesendet = "gesendet" My.Settings.gesendet = "nicht gesendet" End SubEnd Class

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

    1. Formatier deinen Code mal richtig
    2. Verknüpft man Strings mit & nicht mit +
    3. Option Strict On ganz ganz oben einfügen
    4. Verzichte auf

    VB.NET-Quellcode

    1. My.Computer.
    , dafür gibts andere Methoden.

    Das ist nicht böse gemeint, es hilft einfach nur ungemein den Code zu verbessern und für andere auch lesbarer zu machen.