2 votes

Quelle est la meilleure façon d'envoyer des courriels à partir d'une page asp.net ?

Quelle est la meilleure façon d'envoyer un courriel à partir d'une page asp.net ?

Je ne veux pas dire le code pour envoyer réellement le message, je veux dire, par exemple, dans mon application, le lien du mot de passe perdu envoie un email à l'utilisateur quand un bouton est cliqué, mais si le serveur smtp prend 10 secondes pour envoyer le message, l'utilisateur attendra le chargement de la page pendant 10 secondes.

Que suggérez-vous pour éviter cela ?

Merci !

1voto

Steven A. Lowe Points 40596

L'envoi asynchrone ne fonctionnera pas sur un fil de travail asp.net (essayez-le - il lève une exception), alors il faut soit créer un fil secondaire, envoyer l'e-mail dans une fenêtre popup, ou simplement laisser l'utilisateur attendre.

Et ça prend vraiment 10 secondes ? Je ne l'ai jamais vu prendre plus d'une...

0voto

jonathanconway Points 8307

Je ne l'ai jamais fait, mais je vous suggère de développer un processus d'arrière-plan distinct de votre site Web. Ce processus parcourt une table de base de données à la recherche d'adresses électroniques ; chaque fois qu'il en trouve une nouvelle, il envoie un courriel de confirmation à cette adresse, puis la supprime de la liste.

Pendant ce temps, chaque fois qu'un utilisateur soumet votre formulaire ASP.NET, son adresse électronique est ajoutée à la même table de base de données.

Ainsi, vous avez désynchronisé l'envoi des e-mails.

Quelques informations générales sur la création de processus d'arrière-plan :

http://www.codeproject.com/KB/cs/tsnewlib.aspx

http://forums.asp.net/t/1134253.aspx

0voto

ckramer Points 7315

Lancer l'envoi de l'e-mail via un appel Ajax à un service web. Vous pouvez également utiliser la fonction méthode d'envoi asynchrone sur la classe SmtpClient

0voto

tarn Points 1615

Il est très courant de traiter le courrier électronique et d'autres processus longs dans un thread ou un processus séparé. Cela est assez facile à mettre en place avec un système de file d'attente de messagerie ou un processus ordinaire de type batch en arrière-plan.

Cela dit, je pense que vous devriez également envisager les méthodes asynchrones mentionnées par ckramer.

Une autre option consiste à disposer d'un serveur SMTP local.

0voto

Spikolynn Points 1757

Créez une base de données pour tous les courriers sortants et traitez-la dans un autre fil.

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