Tengo varios destinatarios de correo electrónico almacenados en SQL Server. Cuando hago clic en enviar en la página web, debería enviar un correo electrónico a todos los destinatarios. He separado correos electrónicos usando ;
.
A continuación se muestra el código de destinatario único.
MailMessage Msg = new MailMessage();
MailAddress fromMail = new MailAddress(fromEmail);
Msg.From = fromMail;
Msg.To.Add(new MailAddress(toEmail));
if (ccEmail != "" && bccEmail != "")
{
Msg.CC.Add(new MailAddress(ccEmail));
Msg.Bcc.Add(new MailAddress(bccEmail));
}
SmtpClient a = new SmtpClient("smtp server name");
a.Send(Msg);
sreader.Dispose();
c#
mailmessage
Chetan Goenka
fuente
fuente
MailMessage
ySmtpClient
deben estar enusing
bloques.using
bloques" no es igual a "debe eliminarse". En segundo lugar, en el código de producción, como las aplicaciones web, generalmente querrá usar deSendAsync
todos modos, lo que funciona según lo previsto sin la necesidad de eliminar laSnmpClient
instancia.Respuestas:
¡Fácil!
Simplemente divida la lista de direcciones entrantes en el ";" carácter y agréguelos al mensaje de correo:
foreach (var address in addresses.Split(new [] {";"}, StringSplitOptions.RemoveEmptyEntries)) { mailMessage.To.Add(address); }
En este ejemplo,
addresses
contiene "[email protected];[email protected]
".fuente
Como sugirió Adam Miller en los comentarios, agregaré otra solución.
El constructor MailMessage (String from, String to) acepta una lista de direcciones separadas por comas. Entonces, si ya tiene una lista separada por comas (','), el uso es tan simple como:
MailMessage Msg = new MailMessage(fromMail, addresses);
En este caso particular, podemos reemplazar el ';' for ',' y aún hacer uso del constructor.
MailMessage Msg = new MailMessage(fromMail, addresses.replace(";", ","));
Si prefiere esta o la respuesta aceptada, depende de usted. Podría decirse que el bucle aclara la intención, pero esto es más corto y no oscuro. Pero si ya tiene una lista separada por comas, creo que este es el camino a seguir.
fuente
to
parámetro como "Una cadena que contiene la dirección del destinatario del mensaje de correo electrónico". Quiero usarlo pero no si se puede quitar su soporte.Según la documentación:
Propiedad MailMessage.To : devuelve MailAddressCollection que contiene la lista de destinatarios de este mensaje de correo electrónico.
Aquí MailAddressCollection tiene un método integrado llamado
public void Add(string addresses) 1. Summary: Add a list of email addresses to the collection. 2. Parameters: addresses: *The email addresses to add to the System.Net.Mail.MailAddressCollection. Multiple *email addresses must be separated with a comma character (",").
En tu caso :
simplemente reemplace todos los; con ,
Msg.To.Add(toEmail.replace(";", ","));
Para referencia :
fuente
Probé esto usando el siguiente script de PowerShell y usando (,) entre las direcciones. ¡Funcionó para mí!
$EmailFrom = "<[email protected]>"; $EmailPassword = "<password>"; $EmailTo = "<[email protected]>,<[email protected]>"; $SMTPServer = "<smtp.server.com>"; $SMTPPort = <port>; $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer,$SMTPPort); $SMTPClient.EnableSsl = $true; $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($EmailFrom, $EmailPassword); $Subject = "Notification from XYZ"; $Body = "this is a notification from XYZ Notifications.."; $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body);
fuente
C#
, no relacionada con PowerShell en absoluto.NET Framework
sino soloC#
. Si todo el mundo estuviera haciendo lo mismo que tú, también tendríamos respuestas VB.NET, F # o incluso C ++ a todas las preguntas relacionadas con.NET Framework
. Después de todo, es el mismo Framework, es solo una cuestión de traducción ... ¿Ves mi punto aquí? StackOverflow se convertiría en una fuente de información realmente basura