2009-12-10 4 views
0

J'ai une méthode qui a essentiellement une méthode « SendEmail » (il sera ensuite utilisé par le service WCF)Envoi de la même System.Net.MaiL.MailMessage à plusieurs destinataires

Il a params comme, Objet , Body, etc ... et une chaîne [] de destinataires. Ce que je fais, est de créer un MailMessage basé sur les paramètres, puis l'envoyer en utilisant smtp - Je sais que MailMessage a un To MailAddressCollection, mais si j'ajoute chaque adresse à cela, le message est CC'd à chaque personne dans la collection.

Ce que je veux faire est de les envoyer seperateley.

Y a-t-il un moyen de le faire, autre que de créer un message séparé pour chaque élément du tableau Destinataire et de l'envoyer de cette façon? Je ne veux pas simplement leur faire un BCC soit ... pour autant que je sache, cela soit encore enregistré dans les en-têtes du mail, et ce n'est pas particulièrement élégant.

+0

BCC n'est pas enregistré dans l'en-tête du courrier, le ou les destinataires ne pourront jamais voir à qui d'autre ce courrier a été envoyé lorsque vous utilisez BCC. Le serveur SMTP filtre cet en-tête de message. – Tobias

Répondre

2

Je pense que dans ce scénario particulier, vous êtes limité à la création d'un objet MailMessage distinct.

+1

Je suis d'accord, mais vous n'avez pas forcément besoin de créer un nouvel objet, faites simplement une boucle dans le tableau des destinataires et modifiez l'adresse TO de l'objet MailMessage, puis renvoyez dans la boucle jusqu'à ce que vous atteigniez le dernier destinataire. – ryanulit

+1

@ryanulit, ouais encore mieux. – James

+0

comment puis-je changer l'adresse de TO ..? C'est une collection - je peux To.Clear() et ensuite To.Add ("[email protected]") ou quelque chose de similaire ... – Alex

1

peut-être vous pouvez utiliser quelque chose comme ceci:

MailMessage msg= new MailMessage(); 
msg.Subject = *your subject text*; 
msg.From = new MailAddress(*your address*, *your title*;); 
msg.Body = *your body text*;; 

foreach (DataRow row in dsRecipients .Tables[0].Rows) 
{ 
    foreach (DataColumn col in dsRecipients .Tables[0].Columns) 
    { 
     msg.To.Clear(); 
     msg.To.Add(new MailAddress((string)row[col])); 
     server.Send(msg); 
    } 
} 

où dsRecipients est un Dataset peuplé de vos destinataires.

Questions connexes