*solved*E-Mail an mehrere Empfänger (String mit "," getrennte Empfänger)

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von Moritz Jökel.

    *solved*E-Mail an mehrere Empfänger (String mit "," getrennte Empfänger)

    Problem solved!

    Hallo zusammen,
    ich habe folgende Frage:
    Ich versuche eine Mail an mehrer Empfänger gleichzeitig zu senden, aus diversen Foren habe ich erfahren, man kann die Empänger mit einem Komma trennen. Also habe ich einen String dafür erstellt der wie folgt generiert wird:

    Quellcode

    1. For Each Item As Object In ListBox1.Items
    2. Alarmeinheiten &= (Item & ",")
    3. Next

    Beim senden arbeite ich, wie unten zu erkennen mit einem Substring um das Komma hinter der letzten Adresse zu entfernen.

    Die Mail wird leider nicht gesendet aber der Code wirft auch keinen Fehler. Das Programm hängt sich nicht auf oder Stürzt ab, es legt nur, was der nächste Schritt normalerweise ist, diese Mail in der Datenbank an.

    Vielen Dank schonmal. ?(


    Quellcode

    1. Try
    2. [color=#FF0000]Dim Msg As New MailMessage
    3. Dim mycreds As New System.Net.NetworkCredential
    4. mycreds.UserName = "alarmierung.prowl@gmail.com"
    5. mycreds.Password = TextBox1.Text
    6. Msg.IsBodyHtml = False
    7. Dim mySmptsrv As New SmtpClient()
    8. mySmptsrv.EnableSsl = True
    9. mySmptsrv.Host = "smtp.gmail.com"
    10. mySmptsrv.Port = 587
    11. mySmptsrv.UseDefaultCredentials = False
    12. mySmptsrv.Credentials = mycreds
    13. Msg.From = New MailAddress("alarmierung.prowl@gmail.com")
    14. Msg.To.Add(Alarmeinheiten.Substring(0, Alarmeinheiten.Length - 1)) 'hier liegt das Problem
    15. Msg.Subject = "Neue Alarmierung Sanitätsdienst"
    16. Msg.Body = "*" & TbEinsatznummer.Text & " " & TbStichwort.Text & " " & DatUhrzeit.Text & " #" & TbEinsatzort.Text & "#"
    17. mySmptsrv.Send(Msg)[/color]


    Lösung: Danke an dieser Stelle an petaod, der mir dabei geholfen hat mein Problem zu lösen!

    Lösung:

    VB.NET-Quellcode

    1. Public Alarmeinheiten As String
    2. For Each Item In ListBox1.Items
    3. Alarmeinheiten &= (Item & ",")
    4. Next
    5. For Each Recipient In Alarmeinheiten.Trim(","c).Split(","c)
    6. Msg.To.Add(Recipient.Trim)
    7. Next


    Thema kann geschlossen werden.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Moritz Jökel“ ()

    Wie sieht denn der Inhalt von "Alarmeinheiten" nach der Schleife beim debuggen aus?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Sicher das Komma getrennt funktioniert? Ich kenne Empfänger immer als Stringarray.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Moritz Jökel schrieb:


    Hallo,
    z.B. "xyz@gmail.com, abc@gmx.de,qwertz@t-online.de"


    Hast du das mit dem Debugger geprüft oder ist das nur deine Annahme?

    Evtl. statt "," mal ";" verwenden?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen
    Das .To.Add verrät doch schon alles.

    Quellcode

    1. Msg.To.Add("empfaenger1@foo.bar")
    2. Msg.To.Add("empfaenger2@foo.bar")
    3. Msg.To.Add("empfaenger3@foo.bar")
    4. Msg.To.Add("empfaenger4@foo.bar")
    Hallo slice,
    ja das habe ich schon verstanden. Meinst du ich sollte dies in die For-Schleife mit einbauen und den String vergessen?

    Das hört sich für mich sehr logisch an. Danke dir :)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Moritz Jökel“ ()

    Moritz Jökel schrieb:

    Das hört sich für mich sehr logisch an



    Womit wir wieder beim stringarray wären :)
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Vollständige Lösung:

    VB.NET-Quellcode

    1. For Each Item In ListBox1.Items
    2. Alarmeinheiten &= (Item & ",")
    3. Next
    4. Dim Msg As New MailMessage
    5. Dim mycreds As New System.Net.NetworkCredential
    6. mycreds.UserName = "alarmierung.prowl@gmail.com"
    7. mycreds.Password = "******"
    8. Msg.IsBodyHtml = False
    9. Dim mySmptsrv As New SmtpClient()
    10. mySmptsrv.EnableSsl = True
    11. mySmptsrv.Host = "smtp.gmail.com" 'Gmail hat aktuell anscheinend etwas bei ihren SMTP-Servern umgestellt. Bei den Ports muss man rumprobieren.
    12. mySmptsrv.Port = 465
    13. mySmptsrv.UseDefaultCredentials = False
    14. mySmptsrv.Credentials = mycreds
    15. Msg.Subject = "Neue Alarmierung Sanitätsdienst"
    16. Msg.Body = "*" & TbEinsatznummer.Text & " " & TbStichwort.Text & " " & DatUhrzeit.Text & " #" & TbEinsatzort.Text & "#"
    17. Msg.From = New MailAddress("alarmierung.prowl@gmail.com")
    18. For Each Recipient In Alarmeinheiten.Trim(","c).Split(","c)
    19. Msg.To.Add(Recipient.Trim)
    20. Next
    21. mySmptsrv.Send(Msg)