J'ai une application Web MVC 4 et je dois saisir et valider certaines adresses e-mail, sans envoyer d'e-mail à l'adresse e-mail de l'utilisateur.
Actuellement, j'utilise la validation de base des e-mails regex avec ce modèle:
[RegularExpression(@"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z",
ErrorMessage = "Please enter correct email address")]
Bien que cela valide les adresses e-mail, il transmet [email protected] comme adresse e-mail valide. Pour l'instant j'ai une validation qui nécessite des symboles @ symboles. symboles où les symboles peuvent être numériques/alphabétiques et ._-.
J'ai besoin d'une validation de messagerie plus standard pour mon application MVC 4. Comment je fais ça?
Développer sur Réponse d'Ehsan ....
Si vous utilisez .Net Framework 4.5, vous pouvez avoir une méthode simple pour vérifier l'adresse e-mail en utilisant EmailAddressAttribute
Class dans le code.
private static bool IsValidEmailAddress(string emailAddress)
{
return new System.ComponentModel.DataAnnotations
.EmailAddressAttribute()
.IsValid(emailAddress);
}
Si vous envisagez REGEX pour vérifier l'adresse e-mail, lisez:
Je savais comment valider une adresse e-mail jusqu'à ce que je lise la RFC Par Phil Haack
Regex:
[RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Please enter a valid e-mail adress")]
Ou vous pouvez utiliser simplement:
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
Pourquoi ne pas simplement utiliser le EmailAttribute
?
[Email(ErrorMessage = "Bad email")]
public string Email { get; set; }
Non.
Utilisez une expression régulière pour une vérification rapide de la santé mentale, quelque chose comme .@..
, mais presque tous les langages/frameworks ont de meilleures méthodes pour vérifier une adresse e-mail. Utiliser ça.
Il est possible de valider une adresse e-mail avec une expression régulière, mais il s'agit d'une expression régulière longue. Très long .
Et à la fin, vous ne serez pas plus sage. Vous saurez seulement que le format est valide, mais vous ne savez toujours pas s'il s'agit d'une adresse e-mail active. La seule façon de le savoir est d'envoyer un e-mail de confirmation.
Il est surprenant que la question de valider une adresse e-mail revient constamment sur SO!
Vous pouvez trouver une solution pratique souvent mentionnée ici: Comment trouver ou valider une adresse e-mail .
Extrait:
La vertu de mon expression régulière ci-dessus est qu'elle correspond à 99% des adresses e-mail utilisées aujourd'hui. Toutes les adresses e-mail auxquelles elles correspondent peuvent être gérées par 99% de tous les logiciels de messagerie existants. Si vous cherchez une solution rapide, il vous suffit de lire le paragraphe suivant. Si vous voulez connaître tous les compromis et obtenir de nombreuses alternatives parmi lesquelles choisir, lisez la suite.
Voir cette réponse sur SO pour une discussion sur les mérites de l'article au lien ci-dessus. En particulier, le commentaire du 2012-04-17 se lit comme suit:
À tous les plaignants: après 3 heures à expérimenter toutes les solutions proposées dans cette discussion gigantesque, c'est LA SEULE bonne solution Java regex solution que je peux trouver. Aucun des trucs rfc5322 ne fonctionne sur Java regex.