varios - No se puede enviar un correo electrónico a varias direcciones/destinatarios utilizando C#
enviar correo personalizado a varios destinatarios (6)
El problema es que está suministrando una lista de direcciones separadas por punto y coma al constructor de MailMessage
cuando solo toma una cadena que representa una sola dirección:
Una cadena que contiene la dirección del destinatario del mensaje de correo electrónico.
o posiblemente una lista separada por comas (ver a continuación).
Para especificar varias direcciones, debe usar la propiedad To
que es MailAddressCollection
, aunque los ejemplos en estas páginas no lo muestran muy claramente:
message.To.Add("[email protected], [email protected]"));
Las direcciones de correo electrónico para agregar a MailAddressCollection. Varias direcciones de correo electrónico deben separarse con un carácter de coma (",").
por lo que la creación de MailMessage
con una lista separada por comas debería funcionar.
Estoy utilizando el siguiente código, y solo envía un correo electrónico: tengo que enviar el correo electrónico a varias direcciones.
Para obtener más de un correo electrónico, uso:
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();
}
}
y para enviar el correo electrónico que uso:
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);
Esta función valida una lista de direcciones de correo electrónico separadas por comas o punto y coma:
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;
}
}
Este código que uso para enviar correos múltiples a, bcc y 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));
Esto es lo que funcionó para mí. (destinatarios es una matriz de cadenas)
//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;
}
Para enviar a destinatarios múltiples configuré mi cadena de destinatario con una coma como mi separador.
string recipient = "[email protected],[email protected],[email protected]";
Luego, para agregar los destinatarios al objeto MailMessage
:
string[] emailTo = recipient.Split('','');
for (int i = 0; i < emailTo.GetLength(0); i++)
mailMessageObject.To.Add(emailTo[i]);
También se le permite pasar MailMessage.To.Add()
una lista separada por comas de direcciones de correo electrónico RFC 822 válidas :
Nathaniel Borenstein <[email protected]>, Ned Freed <[email protected]>
Entonces el código sería:
message.To.Add("Nathaniel Borenstein <[email protected]>, Ned Freed <[email protected]>");
Nota : Cualquier código lanzado al dominio público. No se requiere atribución.