0 votes

Meilleure pratique pour envoyer un courriel de masse dans une application (ASP.NET MVC 2, C#) ?

Quelle est la meilleure façon de mettre en œuvre la fonction d'envoi massif d'e-mails dans une application Web ? Deux cas principaux :

  1. Messages électroniques pour des utilisateurs enregistrés distincts, en fonction de leurs activités (envoi de courts rappels à l'utilisateur, par exemple, concernant les nouveaux messages dans le sujet qu'il a créé).

  2. La fonctionnalité "Send email for all registered users" (envoyer un courriel à tous les utilisateurs enregistrés), ce serait bien d'avoir une fonction permettant à l'administrateur du système d'envoyer certains messages à tous les utilisateurs enregistrés. Bien sûr, ajouter tous les e-mails au destinataire n'est pas la solution, car les adresses e-mail de chaque utilisateur sont anonymes.

Si je comprends bien, dans le cas n°1, il n'y a pas de problème, il suffit de créer un message électronique via System.Net.Mail en créant un nouveau message et en l'envoyant... mais qu'en est-il du cas n°2 ?

Je pense que c'est un peu ça :

foreach(var emailAddress in emailAddresses) { 

MailMessage mail = new MailMessage();

mail.From = new MailAddress("jondoe@bla.net");

mail.To.Add(emailAddress);

mail.Subject = "test";

mail.Body = "test";

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

smtp.Send(mail); 
}

n'est pas le bon moyen :) donc la question est de savoir quel est le meilleur moyen d'y parvenir ?

En fait, nous n'avons pas la possibilité de déployer un service d'envoi d'e-mails, qui devrait être intégré à l'application Web.

1voto

Abe Miessler Points 34869

Si vous voulez cacher à qui il est destiné dans le cas 2, pourquoi ne pas mettre les destinataires dans le BCC du 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>

1voto

TomTom Points 35574

Autre chose : n'utilisez PAS gmail. D'abord, gmail a des limites - de toute façon, n'utilisez pas de serveur externe du tout.

Je fais ce genre de choses, et j'utilise un répertoire de dépôt sur le disque dur, puis j'utilise un MTA (service SMTP dans Windows en fait) pour effectuer le transfert réel.

De cette façon, je termine rapidement (juste la génération du fichier) alors que les emails réels peuvent prendre plus de temps.

0voto

nonintanon Points 141

Si vous avez trop d'e-mails dans l'instance "emailAddresses", vous serez confronté à un problème de dépassement de délai. Vous pouvez envisager une petite application de service Windows pour gérer la fonction d'envoi. Cela fonctionne pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X