Formulaire de contact pour envoyer un email au Webmaster, application MVC 4.0

Nous avons vu récemment comment envoyer un email depuis un site MVC. Nous allons maintenant voir comment injecter des données provenant d’un formulaire de contact, valider cette saisie et composer un email qui utilise ces données.

Création du Modèle de données

Dans MVC, la première lettre est pour Model (Modèle), il est donc logique de commencer par là. Classiquement, nous avons besoin de connaitre le nom et l’email de l’utilisateur, nous voulons lui donner la capacité d’entrer un sujet et le corps du message.

Notez que ce modèle/classe de données n’est lié à aucun type d’archivage. Dans le cas particulier de ce site, et de l’envoi de messages au Webmaster, il n’y a pas de raisons de stocker ces données, puisqu’elles sont transmises par email, qui lui, est archivé.Les attributs d’annotation sont utilisés extensivement, nous verrons par la suite le code html généré. En conclusion, rien de particulier pour ce modèle.

Méthode du contrôleur pour afficher la Vue, et Création de celle-ci

La méthode servant à afficher la forme ne peut pas être plus simple! Pour créer la vue, on utilise la fonction de scaffolding, vide, dans la mesure où il n’y pas d’Ajout, Edition, Suppression liés à cette fiche. ContactScaffoldView

 

Nous avons juste ajouté un court texte d’introduction à ce que Visual Studio a généré pour nous, et précisé les dimensions souhaitées pour la partie Texte du formulaire, qui constituera le corps de notre email. Contactwebform

Voici ce que l’on obtient si l’on essaye de valider sans avoir indiqué aucune valeur dans les zones de saisie ContactValidation

Les attributs du modèle sont validés par le JavaScript inclus automatiquement par le scaffolding. Comme nous le montre la zone email, il peut y avoir plus d’un contrôle de validation pour la même zone. ContactInvalidEmail

Méthode traitant les données reçues et appel de la méthode MVC Mailer pour envoi

Une seconde méthode Contact surcharge la première avec le paramètre du modèle:

MvcMailer dispose d’une méthode SendAsync dont nous tirons avantage ici. Cela permet d’afficher rapidement la page de remerciement, sans attendre que l’email soit effectivement envoyé. Comme il n’y a pas de lien avec un stockage de données, il n’y a pas non plus de validation (contre des doublons, par exemple) faite au niveau du serveur. On se contente de vérifier que la validation coté client a bien fait son travail. Dans tous les cas d’erreurs, le formulaire est affiché à nouveau. Comme le paramètre du modèle est passé à la vue, les données déjà saisie sont réaffichées. rien de plus frustrant que ces formulaires où il faut saisir les données à nouveau par faute d’un captcha mal lu, par exemple!

Si la validation client se passe bien, on passe a la méthode Contact de MVCMailer l’objet des données Contact. Ce qui avait été directement généré par le scaffolding de MVCMailer a été modifié pour que la méthode Contact accepte le modèle comme paramètre:

En même temps les données sont passées au corps de l’email. Comme il s’agit ici d’envoyer des emails au WebMaster, l’email destination est codé directement, alors que généralement c’est une donnée entrée par l’utilisateur, où provenant d’une base de données. Notez qu’un double de l’email est envoyé à l’utilisateur, pratique courante utile pour l’archivage, mais aussi permettant de détecter les spammeurs en regardant les logs du serveur de mail.Comme vous le constater, MVCMailer permet de rendre la création de cette fonctionnalité très simple

Et vous, comment envoyez-vous des emails depuis voptre application MVC? N’hésitez pas à utiliser les commentaires pour partager/questionner. Abonnez-vous à BGSoftFactory « Le » Blog

This work is licensed under a Creative Commons license.
Publié dans .Net, C#, ASP.NET MVC 4.0, Web Tagués avec : , , ,

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Lettre d’information

Recherche sur le Site

Recherche personnalisée