Entwickler-Ecke

Netzwerk - Email an mehrere Empfänger


Talemantros - So 19.06.16 11:45
Titel: Email an mehrere Empfänger
Hallo,
ich möchte gern aus meiner Anwendung heraus eine InfoEmail bestimmte Leute versenden können.
Dies funktioniert derzeit leider nur solange es ein Empfänger ist. Mit mehreren leider nicht

Probiert habe ich es so:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
                    Mail myMail = new Mail();
                    myMail.Subject = "Testbetreff";
                    myMail.MailTo = "daniel@fischbach-kassel.de;daniel@fischbach-kassel.de";
                    myMail.Body = "Testinhalt";
                    if (Global.SendMail(myMail))

                    ....


Der Quellcode zum Versnden


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
        public static bool SendMail(Mail mail)
        {
            //TODO: Absenderinformationen über Optionen abbilden
            try
            {
                if (mail.Body != string.Empty)
                {
                    System.Net.Mail.SmtpClient myMail = new System.Net.Mail.SmtpClient();


                    System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();

                    msg.From = new MailAddress("daniel@fischbach-kassel.de");

                    string[] mailAddresses = mail.MailTo.Split(";".ToCharArray());

                    foreach (string mailAddress in mailAddresses)
                    {
                        if (mailAddress != String.Empty)
                        {
                            msg.To.Add(mailAddress);
                        }
                    }

                    msg.Subject = mail.Subject;
                    msg.Body = mail.Body;

                    if ((mail.Attachment != string.Empty) && (File.Exists(mail.Attachment)))
                    {
                        Attachment MyAttachment = new Attachment(mail.Attachment);
                        msg.Attachments.Add(MyAttachment);
                    }

                    myMail.Credentials = new NetworkCredential("xxx""xxx");
                    myMail.Host = "smtp.1und1.de";
                    myMail.Send(msg);
              }

}


Funktioniert leider immer nur mit dem ersten Empfänger


Moderiert von user profile iconChristian S.: Topic aus Basistechnologien verschoben am So 19.06.2016 um 11:51

EDIT: Funktioniert genau wie oben beschrieben.
Die zweite Mail wurde nur vom EmailClient zusammen gefasst daher habe ich nicht gesehen, dass diese auch 2 x verwendet wurde.

Sorry


Csharp-programmierer - So 19.06.16 13:30

Also ich würde eine andere Methode zum Versenden von E-Mails bevorzugen:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
private void SendMail(string Absender, string Empfänger, string Betreff, string InhaltDerMail, string SmtpServer, string Benutzername, string Passwort)
        {
            MailMessage myMessage = new MailMessage(Absender, Empfänger, Betreff, InhaltDerMail);
            SmtpClient client = new SmtpClient(SmtpServer);
            client.Port = 578;
            client.Credentials = new System.Net.NetworkCredential(Benutzername, Passwort);
            client.EnableSsl = true;
            client.Send(myMessage);
        }


Und um diese EMail an alle Leute (aus einer Datenbank oder einer generischen Liste) zu versenden, kannst du diese Methode dann in einer foreach Schleife oder so einbauen, und dann müsste es eigentlich funktionieren.


Christian S. - So 19.06.16 14:02

user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Also ich würde eine andere Methode zum Versenden von E-Mails bevorzugen:
Warum?


Csharp-programmierer - So 19.06.16 22:02

Naja ich kenne bisher nur diese Methode und sie hat mich noch nie im Stich gelassen. Ich bin auch der Meinung, dass man sie besser aufrufen kann, durch eine Schleife und dieser Methode dann einfach die Werte mitgibt. Aber das ist Ansichtssache :)


Christian S. - So 19.06.16 22:15

user profile iconCsharp-programmierer hat folgendes geschrieben Zum zitierten Posting springen:
Naja ich kenne bisher nur diese Methode und sie hat mich noch nie im Stich gelassen. Ich bin auch der Meinung, dass man sie besser aufrufen kann, durch eine Schleife und dieser Methode dann einfach die Werte mitgibt. Aber das ist Ansichtssache :)
Es ist bei E-Mails, die mehrere Empfänger haben, nun mal üblich, diese Empfänger auch in der Empfängerliste zu haben. Nur so wissen alle Personen, wer die Mail noch bekommen hat und können bei Bedarf entsprechend antworten. Außerdem ist es viel effizienter, weil der SMTP-Server dann das Mehrfach-Versenden erledigt und nicht der Client. Und ob ich die Schleife jetzt beim Setzen der Empfänger oder beim eigentlichen Versenden habe, ist wohl auch wurscht.