2010-05-19 9 views
0

Quel est le meilleur moyen de mettre en œuvre la fonction d'envoi de courriels de masse dans l'application Web? Deux cas principaux:Meilleure pratique pour envoyer des e-mails en masse dans une application (ASP.NET MVC 2, C#)?

  1. messages électroniques pour les utilisateurs séparés enregistrés en fonction de leurs activités (juste envoyer des rappels courts à l'utilisateur pour ex au sujet de nouveaux messages dans son sujet créé)

  2. « Envoyer un email pour tous les utilisateurs enregistrés "fonctionnalité, il sera agréable d'avoir une fonctionnalité pour l'administrateur système pour envoyer des messages pour tous les utilisateurs enregistrés. Bien sûr, l'ajout de tous les e-mails au destinataire n'est pas la solution, car les adresses e-mail de chaque utilisateur sont anonymes.

Comme je comprends pour le cas NR1 il n'y a aucun problème il suffit de créer un certain message via System.Net.Mail en créant un nouveau message mail et l'envoyer ... mais qu'en est-cas n ° 2 ???

je suppose SMTH comme ceci:

foreach(var emailAddress in emailAddresses) { 

MailMessage mail = new MailMessage(); 

mail.From = new MailAddress("[email protected]"); 

mail.To.Add(emailAddress); 

mail.Subject = "test"; 

mail.Body = "test"; 

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587); 

smtp.Send(mail); 
} 

est pas la bonne façon :) Donc la question est quelle est la meilleure façon d'y parvenir?

btw nous n'avons pas la possibilité de déployer un serive pour l'envoi d'emails, cela devrait être intégré dans l'application web.

+0

Quel est le problème avec la boucle? Cela semble être la meilleure option pour moi. Vous envoyez 1 email par personne, protégeant l'anonymat de chaque individu. –

Répondre

1

Si vous voulez cacher qui il va dans le cas 2 pourquoi ne pouvez-vous pas mettre les destinataires dans la BCC de MailMessage?

Une chose que je recommande est de définir vos paramètres de messagerie dans votre web.config comme ci-dessous:

<configuration> 
    <!-- Add the email settings to the <system.net> element --> 
    <system.net> 
    <mailSettings> 
     <smtp> 
     <network 
      host="relayServerHostname" 
      port="portNumber" 
      userName="username" 
      password="password" /> 
     </smtp> 
    </mailSettings> 
    </system.net> 

    <system.web> 
    ... 
    </system.web> 
</configuration> 
1

autre chose: ne pas utiliser gmail. Premièrement, gmail a des limites - n'utilisez aucun serveur externe du tout. Je fais des choses comme ça, et j'utilise un répertoire de dépôt sur le disque dur, puis j'utilise un MTA (service SMTP sous Windows) pour effectuer le transfert.

De cette façon, je finis rapidement (juste la génération de fichiers) alors que les e-mails réels peuvent prendre plus de temps.

0

Si vous avez reçu trop d'e-mails dans l'instance "emailAddresses", vous risquez de rencontrer le problème du délai d'expiration. Vous pourriez envisager une application Windows Service minuscule pour gérer la fonction d'envoi. Ça marche pour moi.

Questions connexes