2008-09-11 6 views
5

Je parcours actuellement un lecteur de données et appelle la méthode Send() de System.Net.Mail.SmtpClient. Le problème avec ceci est que c'est lent. Chaque envoi prend environ 5-10 secondes à envoyer (il est possible que ce soit juste un problème avec mon hébergeur). Je devais remplacer la valeur par défaut executionTimeout dans mon fichier web.config (valeur par défaut à 90 secondes) comme ceci:Quel est le meilleur moyen d'envoyer de gros lots d'emails dans ASP.NET?

<httpRuntime executionTimeout="3000" /> 

Une mise en garde: Je suis sur un hébergement mutualisé, donc je ne pense pas qu'il est possible pour moi d'envoyer en utilisant l'option PickupDirectoryFromIis (au moins, il m'a donné des erreurs quand je l'ai allumé).

Répondre

6

Vous pouvez envoyer le courrier de manière asynchrone. De cette façon, le timeout ne devrait pas interrompre votre envoi.

Cet article devrait vous aider à démarrer avec cela: Sending Emails Asynchronously in C#.

Il y a une autre approche ici: http://www.vikramlakhotia.com/Sending_Email_asynchronously_in_AspNet_20.aspx

Et bien sûr il y a plusieurs clients commerciaux disponibles, mais le seul que je l'ai essayé et je peux recommander est http://www.aspnetemail.com/

0

fraient Certainement le tout sur un travailleur de fond processus de sorte qu'ils sortent de manière asynchrone.

BTW, 5-10 secondes par e-mail me semble très lent. Sur mon serveur, cela ne prend que quelques fractions de seconde par e-mail.

Questions connexes