95 votes

Quel est l'état de l'art en matière de validation de courrier électronique pour Rails?

Qu'utilisez-vous pour valider les adresses de messagerie des utilisateurs, et pourquoi?

J'avais été en utilisant validates_email_veracity_of qui, de fait, les requêtes les serveurs MX. Mais qui est plein d'échouer pour diverses raisons, la plupart liées au trafic réseau et la fiabilité.

J'ai regardé autour de moi et je ne pouvais pas trouver quelque chose évident que beaucoup de gens utilisent pour effectuer un test de cohérence sur une adresse de courriel. Est-il maintenu, raisonnablement exacte plugin ou un bijou?

P. S.: Merci de ne pas me dire d'envoyer un email avec un lien pour voir si le mail fonctionne. Je suis le développement d'une "envoyer à un ami", donc ce n'est pas pratique.

106voto

SFEley Points 4161

Ne pas rendre plus difficile qu'il doit être. Votre fonction est non-critique; la validation est juste une base en santé mentale de l'étape de capture des fautes de frappe. Je voudrais le faire avec une simple regex, et ne pas perdre de cycles du PROCESSEUR sur quelque chose de trop compliqué:

/\A[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]+\z/

Qui a été adapté à partir de http://www.regular-expressions.info/email.html -- ce que vous devriez lire si vous voulez vraiment connaître tous les avantages et les inconvénients. Si vous voulez un plus correct et beaucoup plus compliqué entièrement RFC822-conforme regex, c'est sur cette page. Mais le truc, c'est ceci: vous n'avez pas à obtenir tout à fait raison.

Si l'adresse est valide, vous allez envoyer un e-mail. Si l'e-mail ne parvient pas, vous allez avoir un message d'erreur. À quel point vous pouvez dire à l'utilisateur "Désolé, votre ami n'a pas reçu qu'aimeriez-vous essayer à nouveau?" ou le drapeau pour examen manuel, ou tout simplement de l'ignorer ou de quoi que ce soit.

Ce sont les mêmes options que vous avez à traiter si l'adresse n'a réussi la validation. Parce que même si votre validation est parfait et vous acquérir la preuve absolue que l'adresse existe, l'envoi pourrait encore échouer.

Le coût d'un faux positif sur la validation est faible. Le bénéfice de la validation est également faible. Valider de générosité, et de s'inquiéter des erreurs lorsqu'elles se produisent.

67voto

Hallelujah Points 744

Avec Rails 3.0, vous pouvez utiliser une validation de courrier électronique sans expression rationnelle à l'aide de la gemme Mail .

Voici ma mise en œuvre ( emballée comme une gemme ).

12voto

balexand Points 3691

J'ai créé une gemme pour la validation des e-mails dans Rails 3. Je suis un peu surpris que Rails n'inclue pas quelque chose comme ceci par défaut.

http://github.com/balexand/email_validator

10voto

Brian Armstrong Points 8259

Ce projet semble avoir les plupart watchers sur github pour le moment (pour la validation du courriel dans les rails) :

https://github.com/alexdunae/validates_email_format_of

6voto

StefanO Points 348

Comme SFEley dit que cela dépend comment approfondie vous voulez être. Dans la plupart des cas, ses regex suffit. Je viens d’utiliser bibliothèque TMail de ruby pour valider n’importe quelle adresse de courriel juridique, peut-être au détriment de certains cycles CPU.

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