web-dev-qa-db-de.com

Senden einer E-Mail an mehrere Adressen/Empfänger mit C # nicht möglich

Ich verwende den folgenden Code, und es wird nur eine E-Mail gesendet. Ich muss die E-Mail an mehrere Adressen senden.

Um mehr als eine E-Mail zu erhalten, verwende ich:

string connectionString = ConfigurationManager.ConnectionStrings["email_data"].ConnectionString;
OleDbConnection con100 = new OleDbConnection(connectionString);
OleDbCommand cmd100 = new OleDbCommand("select top 3 emails  from bulk_tbl", con100);
OleDbDataAdapter da100 = new OleDbDataAdapter(cmd100);
DataSet ds100 = new DataSet();
da100.Fill(ds100);

    for (int i = 0; i < ds100.Tables[0].Rows.Count; i++)
    //try
    {
        string all_emails = ds100.Tables[0].Rows[i][0].ToString();
        {
            string allmail = all_emails + ";";
            Session.Add("ad_emails",allmail);
            Response.Write(Session["ad_emails"]);
            send_mail();
        }
    }

und zum Versenden der E-Mail verwende ich:

string sendto = Session["ad_emails"].ToString();

MailMessage message = new MailMessage("[email protected]", sendto, "subject", "body");
SmtpClient emailClient = new SmtpClient("mail.smtp.com");
System.Net.NetworkCredential SMTPUserInfo = new System.Net.NetworkCredential("abc", "abc");
emailClient.UseDefaultCredentials = true;
emailClient.Credentials = SMTPUserInfo;
emailClient.Send(message);
21
azeem

Das Problem ist, dass Sie dem MailMessage-Konstruktor eine durch Semikolons getrennte Liste von Adressen bereitstellen, wenn nur eine Zeichenfolge verwendet wird, die eine einzelne Adresse darstellt:

Ein String, der die Adresse des Empfängers der E-Mail-Nachricht enthält.

oder möglicherweise eine durch Kommas getrennte Liste (siehe unten).

Quelle

Um mehrere Adressen anzugeben, müssen Sie die Eigenschaft To verwenden, bei der es sich um eine MailAddressCollection handelt. Die Beispiele auf diesen Seiten zeigen dies jedoch nicht sehr deutlich:

message.To.Add("[email protected], [email protected]"));

Die E-Mail-Adressen, die der MailAddressCollection hinzugefügt werden sollen. Mehrere E-Mail-Adressen müssen durch ein Kommazeichen (",") getrennt werden.

MSDN-Seite

das Erstellen der MailMessage mit einer durch comma getrennten Liste sollte funktionieren.

60
ChrisF

Das hat bei mir funktioniert .. (Empfänger sind ein Array von Strings)

//Fuse all Receivers
var allRecipients = String.Join(",", recipients);

//Create new mail
var mail = new MailMessage(sender, allRecipients, subject, body);

//Create new SmtpClient
var smtpClient = new SmtpClient(hostname, port);

//Try Sending The mail
try
{
    smtpClient.Send(mail);
}
catch (Exception ex)
{
    Log.Error(String.Format("MailAppointment: Could Not Send Mail. Error = {0}",ex), this);
    return false;
}
8
VRC

Diese Funktion validiert eine durch Kommas oder Semikolons getrennte Liste von E-Mail-Adressen:

public static bool IsValidEmailString(string emailAddresses)
{
    try
    {
        var addresses = emailAddresses.Split(',', ';')
            .Where(a => !string.IsNullOrWhiteSpace(a))
            .ToArray();

        var reformattedAddresses = string.Join(",", addresses);

        var dummyMessage = new System.Net.Mail.MailMessage();
        dummyMessage.To.Add(reformattedAddresses);
        return true;
    }
    catch
    {
        return false;
    }
}
6
Matt

Um an mehrere Empfänger zu senden, habe ich meine Empfängerzeichenfolge mit einem Komma als Trennzeichen eingerichtet.

string recipient = "[email protected],[email protected],[email protected]";

Dann fügen Sie die Empfänger dem MailMessage-Objekt hinzu:

string[] emailTo = recipient.Split(',');
for (int i = 0; i < emailTo.GetLength(0); i++)
    mailMessageObject.To.Add(emailTo[i]);
4
Zach M

Diesen Code verwende ich für das Senden mehrerer E-Mails für an, bcc und cc

MailMessage email = new MailMessage();
Attachment a = new Attachment(attach);
email.From = new MailAddress(from);//De
string[] Direcciones;
char[] deliminadores = { ';' };

//Seleccion de direcciones para el parametro to
Direcciones = to.Split(deliminadores);
foreach (string d in Direcciones)
email.To.Add(new MailAddress(d));//Para

//Seleccion de direcciones para el parametro CC
Direcciones = CC.Split(deliminadores);
foreach (string d in Direcciones)
email.CC.Add(new MailAddress(d));

//Seleccion de direcciones para el parametro Bcc
Direcciones = Bcc.Split(deliminadores);
foreach (string d in Direcciones)
enter code here`email.Bcc.Add(new MailAddress(d));
0
Daniel Alvarado

Sie können auch MailMessage.To.Add()a durch Kommas getrennte Liste gültiger RFC 822-E-Mail-Adressen übergeben:

Nathaniel Borenstein <[email protected]>, Ned Freed <[email protected]>

Der Code wäre also:

message.To.Add("Nathaniel Borenstein <[email protected]>, Ned Freed <[email protected]>");

Note: Jeder öffentlich zugänglicher Code. Keine Zuordnung erforderlich.

0
Ian Boyd