2010-12-10 4 views
0

Je suis en train d'écrire un processus d'enregistrement d'utilisateur dans ASP.NET MVC 3 RC, et je voudrais envoyer un email de confirmation à l'utilisateur au cours de ce processus. Je sais que je peux le faire en utilisant les classes dans l'espace de noms System.Net.Mail, mais j'ai quelques questions sur la meilleure façon de mettre en œuvre cela.Envoyer un e-mail à partir de ASP.NET MVC

  1. Avant d'aller sur le chemin de l'écriture de mon propre code pour envoyer des e-mail, sont-il des solutions existantes comme ActionMailer pour ASP.NET MVC? Si je lance le mien, devrais-je le faire sur le serveur Web pendant la requête et utiliser Send pour ralentir le serveur Web, en attachant les threads pendant qu'ils attendent sur le serveur SMTP pour répondre? Si oui, est-ce que SendAsync serait préférable? Serait-il préférable de retirer entièrement ASP.NET MVC, peut-être en écrivant un enregistrement dans une table de base de données et d'avoir un service Windows balayer périodiquement la table et envoyer les messages?

En ce moment, je me penche vers # 3, car cela me donne la flexibilité de faire ce travail sur un autre serveur entièrement, mais se demandait ce que les autres font. Existe-t-il des options et/ou des problèmes que je n'ai pas pris en compte?

Répondre

4

Personnellement, je serais d'accord que # 3 est votre meilleure option. C'est le plus complexe des trois, mais aucun d'eux n'est terriblement complexe. Ce qu'il fait, cependant, est:

  1. Vous donner un enregistrement de tous les e-mails envoyés par le système.
  2. Supprime la dépendance du système de messagerie de l'application en cours. (Séparation des préoccupations est toujours amusant.)
  3. Fournir un mécanisme de ré-essai naturel lorsque la dépendance du système de messagerie échoue.

Comme pour une bibliothèque existante pour faciliter la création/l'envoi des objets MailMessage, je n'ai jamais vu un besoin. Si vous envoyez simplement les messages à un serveur SMTP, les objets intégrés sont plus que suffisants et faciles à utiliser.

+0

De bons points, merci pour les commentaires :-) –

+0

# 3 serait le meilleur et j'ai fait beaucoup de projets. Cependant, chaque fois que j'utilise cette solution, je ne peux m'empêcher de me sentir un peu bête pour écrire une file d'attente pour une file d'attente SMTP :) – Naren

+0

@Naren: J'ai déjà implémenté # 3 où l'application enverrait le message au service de données par moyens d'une file d'attente de messages. Après tout, qu'est-ce qu'une autre couche d'abstraction parmi les services? – David

3

MvcMailer est comme un ActionMailer pour .Net. Voir le paquet NuGet here et le project documentation

Espérons que ça aide!

+0

Ce serait, IMO, être la solution la plus propre. Vous pouvez utiliser la vue en tant que corps du message OU spécifier le corps du message manuellement, mais il n'y a rien de plus qu'une ligne de code pour effectuer l'envoi. Belle trouvaille! –

Questions connexes