Announcement

Collapse
No announcement yet.

Mailversand + In der E-Mail-Kopfzeile wurde ein ungültiges Zeichen gefunden: ";"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mailversand + In der E-Mail-Kopfzeile wurde ein ungültiges Zeichen gefunden: ";"

    Hallo zusammen,

    ich habe ein Programm welches mehreren Benutzern eine Mail schicken solle, leider kommt es dabei zu oben genanntem Fehler.

    Folgenden Code habe ich:

    Code:
    If File.Exists(ProgramPath & "\resources\config\" & txtBoxScanArticle.Text & "_mail.txt") Then
    
                Dim ReadFile As New IO.StreamReader(ProgramPath & "\resources\config\" & txtBoxScanArticle.Text & "_mail.txt")
                Dim Source As String = ReadFile.ReadToEnd
    
                ReadFile.Close()
    
                Dim Line() As String = Split(Source, vbNewLine)
    
                Dim SendToMail As String
                Dim SendToCc As String
                SendToMail = (Line(0))
                'SendToCc = (Line(1))
    
                If Line(1) = Nothing Then
    
                    SendToCc = Line(0)
    
    
                Else
    
                    SendToCc = Line(1)
    
                End If
    
                MsgBox(SendToCc)
                MsgBox(SendToMail)
    
                If txtBoxScanArticle.Text = Nothing Then
    
                    MsgBox("Bitte Materialnummer eingeben!")
    
                Else
    
                    If MsgBox("Nachricht absenden?", vbYesNo + vbQuestion, "Bitte Eingaben prüfen!") = 6 Then
    
                        Using SMTPServer As New SmtpClient()
                            Dim sendTo As MailAddress = New MailAddress(SendToMail)
                            Dim sendCc As MailAddress = New MailAddress(SendToCc)
    
    
                            Dim sendFrom As MailAddress = New MailAddress(My.Settings.SendFrom)
                            Dim message As New MailMessage(sendFrom, sendTo)
                            Dim Hinweis As String = "------------------------------------------------------------" & vbCrLf & "Diese Mail wurde automatisch erzeugt, bitte nicht antworten!"
    
                            'Unter Zuhilfenahme des Hostnames wird die Bezeichnung des Settings ermittelt welche als Wert den Hostnamen enthält
    
                            For Each SettingsProp As System.Configuration.SettingsProperty In My.Settings.Properties
    
                                If SettingsProp.PropertyType Is GetType(String) Then
                                    Dim Workplace As String = DirectCast(My.Settings.Item(SettingsProp.Name), String)
                                    'MsgBox(Workplace)
    
                                    If Workplace = Hostname.ToUpper Then
    
                                        'MsgBox(Workplace & vbCrLf & SettingsProp.Name)
                                        message.Subject = "Materialanforderung - Arbeitsplatz: " & SettingsProp.Name
    
                                        Exit For
                                    Else
    
                                        message.Subject = "Materialanforderung - Arbeitsplatz: " & Hostname.ToUpper
    
                                    End If
    
                                End If
    
                            Next
    
                            message.CC.Add(sendCc)
                            message.IsBodyHtml = My.Settings.MailHTMLBody
    
                            message.Body = "Bitte folgendes Material bereitstellen: " & txtBoxScanArticle.Text & vbCrLf & vbCrLf & lblDescription.Text & vbCrLf & vbCrLf & "Bemerkungen:" & vbCrLf & vbCrLf & RtxtBoxRemark.Text & vbCrLf & vbCrLf & Hinweis
    
                            If My.Settings.SMTPCredentials_Active = True Then
    
                                Dim basicAuthenticationInfo As New System.Net.NetworkCredential(My.Settings.SMTPUsername, My.Settings.SMTPPassword)
                                'SMTPServer.Credentials = My.Settings.SMTPCredentials
                                SMTPServer.Credentials = basicAuthenticationInfo
    
                            Else
    
                                Dim basicAuthenticationInfo As New System.Net.NetworkCredential("", "")
                                SMTPServer.Credentials = Nothing
    
                            End If
    
                            SMTPServer.Host = My.Settings.Mailserver
                            SMTPServer.UseDefaultCredentials = My.Settings.SMTPUseDefaultCredentials
                            SMTPServer.EnableSsl = My.Settings.SMTPEnableSSL
    
                            Try
    
                                SMTPServer.Send(message)
                                MsgBox("Nachricht erfolgreich versand!")
    
                            Catch ex As Exception
    
                                MsgBox("Senden fehlgeschlagen!" & vbCrLf & vbCrLf & ex.Message.ToString)
    
                            End Try
                        End Using
    
                        If My.Settings.Logging_Active = True Then
    
                            For Each SettingsProp As System.Configuration.SettingsProperty In My.Settings.Properties
    
                                If SettingsProp.PropertyType Is GetType(String) Then
    
                                    Dim LogPath As String = My.Settings.LogPath
    
                                    My.Computer.FileSystem.WriteAllText(LogPath & "\Logfile.txt", System.DateTime.Now & " " & "Arbeitsplatz: " & SettingsProp.Name & " " & "Materialnummer: " & txtBoxScanArticle.Text & " " & "Materialbeschreibung: " & lblDescription.Text & vbCrLf, False)
    
                                End If
                            Next
    
                        End If
    
                        lblDescription.Text = "Materialbeschreibung"
                        txtBoxScanArticle.Clear()
                        RtxtBoxRemark.Clear()
                        PictureBoxArticle.Image = System.Drawing.Image.FromFile(ProgramPath & "\resources\default\default.jpg")
    
                        Exit Sub
    
                    Else
    
                        MsgBox("Nachricht wurde nicht versand!")
    
                    End If
    
                End If
    
            Else
    
                MsgBox("Empfängerdatei wurde nicht gefunden!")
    
            End If
    Die Empfängerdatei enthält mehrere durch ; getrennte Empfänger.

    Ich suche verzweifelt nach einer Möglichkeit die Datei so verwenden zu können.

  • #2
    Ich glaube sowas mag ich nicht lesen.

    Versuche doch erstmal das Problem in verschiedene Teile aufzuteilen.

    Folgende Probleme würde ich sehen:

    1. Einlesen mehrerer Benutzer (EMail Adressen) aus einer Datei
    2. Erstellen einer EMail
    3. Versenden EINER EMail
    4. Versenden mehrerer EMails über die oben erstellte Schnittstelle anhand einer Liste von Personen (evtl. mehrere wenn CC und BCC auch berücksichtigt werden müssen)

    Das wären jetzt die logischen Schritte die ich vornehmen würde. Danach kann man dann versuchen den Fehler zu finden. Dann habe ich nur noch kleine Blöcke und die Fehler lassen sich sehr leicht eingrenzen. In Deinem Beispiel ist es allerdings sehr sehr viel miteinander verwobener Code der viel zu viel auf einmal macht.

    Comment


    • #3
      Mailversand + In der E-Mail-Kopfzeile wurde ein ungültiges Zeichen gefunden: ";"
      Die Empfängerdatei enthält mehrere durch ; getrennte Empfänger.

      Ich suche verzweifelt nach einer Möglichkeit die Datei so verwenden zu können.
      Und nun ein Zitat aus der Dokumentation zu MailAddress

      Ein Komma wird verwendet, um Elemente in einer Liste von E-Mail-Adressen zu trennen. Als Folge sollte ein Komma nicht in Anzeigenamen ohne Anführungszeichen in einer Liste verwendet werden. Die folgenden E-Mail-Adressen würden nicht zugelassen werden

      "John, Doe" <user@host>, "Bob, Smith" <user2@host>
      Edit: Man sollte das englische Original der Doku lesen Die haben in Deutsch ein nicht reingelogen. Natürlich ist sind die beiden Adressen in dieser Form zulässig.

      Comment


      • #4
        Hallo Ralf,

        vielen Dank für den Tipp.

        Mit der Trennung , und einem darauffolgendem Leerzeichen klappt das Ganze.

        Sieht dan also so aus: mail1.host.de, [email protected]

        Comment

        Working...
        X