2012-03-16 9 views

Respuesta

28

no se puede utilizar el constructor MailAddress para especificar varios recibos, pero hay que utilizar el objeto MailMessage como demostró a continuación

... 
MailMessage mail = new MailMessage(); 
mail.To.Add("[email protected],[email protected],[email protected]"); 
... 

otra manera es:

MailMessage msg = new MailMessage(); 
msg.To.Add("[email protected]"); 
msg.To.Add("[email protected]"); 
msg.To.Add("[email protected]"); 
msg.To.Add("[email protected]"); 
+0

¿cuál es la diferencia entre la mía y la tuya? –

+0

¿Lo sé pero cómo configurarlo en el propio constructor? –

+0

Tiene un objeto de MailMessage para empezar. De hecho, he explicado un poco de esto en mi respuesta. la respuesta simple es que 'mail.To' es una' MailAddressCollection' que permite múltiples direcciones de correo electrónico. 'MailAddress' solo tiene una sola dirección (el hecho de que es singular puede ayudarte a recordar esto). – Chris

2

Podría haber una pregunta de por qué estás queriendo hacer esto? Algo como MailMessage.To es MailAddressCollection cuyo método Add está sobrecargado para tomar varias direcciones de correo electrónico en una cadena, separadas por una coma (consulte http://msdn.microsoft.com/en-us/library/ms144695.aspx).

El uso habitual de los objetos MailAddress es agregarlos a los correos electrónicos y si tiene varias direcciones, supongo que desea agregarlos a uno de los campos Para, CC, etc. en cuyo caso la sobrecarga Añadir debería hacer muy bien Si hay algo más, entonces tendrá que proporcionar más contexto para lo que está tratando de hacer.

+0

razón es que tengo un código predefinido que no se supone que cambie. Entonces, ¿es posible agregar múltiples identificadores dentro de mailaddress consturctor o no? –

+0

No, no puedes. Un objeto 'MailAddress' es para una sola dirección de correo. http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx es el documento que debería responder a cualquier otra pregunta que tenga sobre el objeto. – Chris

18

En realidad, el punto y coma no es un delimitador válido. Desafortunadamente, MSDN no documenta esto, tuve que averiguarlo por mi cuenta.

Si desea agregar más direcciones, divídalas por comas. Y el espacio dividirá el nombre para mostrar y la dirección de correo electrónico. Las "A" propiedad acepta siguientes formatos:

etc ...

me escribió más sobre este tema in this blog post

+1

En su último ejemplo, '" name [email protected], [email protected] "', MailMessage estaba interpretando una prueba que hice como "nombre de correo electrónico" como el prefijo del correo electrónico. Tenía que hacerlo así: '" Adam Miller <[email protected]> "' –

1

Utilice una coma (,) como separador en lugar de punto y coma (;).

Si múltiples e las direcciones de correo electrónico separadas con un carácter de punto y coma (";") se pasan en el parámetro de direcciones. Se genera una excepción de FormatException.

Ejemplos que trabajan

MailAddressCollection.Add (String):

using (MailMessage msg = new MailMessage()) 
{ 
    ... 
    msg.To.Add("[email protected], [email protected]"); 
    ... 
} 

MailAddressCollection.Add (MailAddress):

using (MailMessage msg = new MailMessage()) 
{ 
    ... 
    msg.To.Add(new MailAddress("[email protected]", "Vetrivelmp")); 
    msg.To.Add(new MailAddress("[email protected]", "Vetrivelmp1")); 
    ... 
} 
-2

Esto es lo que funcionó para mí.

MailMessage m_message = new MailMessage(); 
    string m_addys = "[email protected],[email protected]"; 
    m_message.To.Add(m_addys); 
+0

Eso no hace lo que crees que hace. Eso envía un correo electrónico solo a [email protected], y el nombre de la persona aparecerá como [email protected] –

+0

Tiene razón. Debería ser así: "addy2 @ foo.com, addy1 @ foo.com". Y es una cadena no una MailAddress. – smoore4

Cuestiones relacionadas