salut hi comment puis-je valider le courrier électronique dans c # winforms? p>
11 Réponses :
Cette page a une bonne expression régulière correspondant aux adresses e-mail. p>
N'oubliez pas que ce n'est qu'une vérification formelle. Pour vérifier si une adresse électronique existe vraiment, vous devez envoyer un courrier électronique réel à l'adresse et vérifier la réponse du serveur de messagerie. p>
Et même si cela réussit, le serveur SMTP peut être configuré pour ignorer les adresses de destinataires non valides. P>
Vous pouvez utiliser une expression régulière pour la valider. Il existe différentes différentes flottantes, mais les plus complets que j'ai utilisés sont assez longs, comme indiqué ici p>
Vous pouvez utiliser des expressions régulières pour valider les adresses électroniques:
RegEx reg=new RegEx(@"^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$", RegexOptions.IgnoreCase); ///Object initialization for Regex if(reg.IsMatch("email string")) //valid email
Cela ne fonctionnera que s'il est insensible à la casse. Inclure regexoption.ignorecase code>
Si vous souhaitez valider le format d'adresse, vous devez probablement utiliser une expression régulière. Il y a des milliers d'exemples là-bas, alors je vous laisserai trouver et choisir le meilleur. P>
Si vous souhaitez valider qu'une adresse existe, Cet article donne quelques pointeurs sur la façon de le faire, sans donner des exemples de code spécifiques. P>
En effet, un bon lien expliquant dans PHP Comment établir la connexion afin de tout le serveur distant, bien qu'il n'a rien à voir avec C #
Le meilleur moyen est de la diviser en deux à la "@" et de valider la partie de boîte aux lettres et la partie de domaine séparément. Je sais qu'il y a des flottes de Reg-ex, mais ceux-ci peuvent être compliqués assez rapidement. P>
Section 3.4 de RFC2822 définit entièrement une adresse e-mail valide : Recherchez la spécification pour Essentience La partie de boîte aux lettres est une chaîne d'un ou plusieurs caractères alphanumérique ou l'un des!, #, $,% et, ', *, +, -, /, =?, ^, _, `, {, |,}, ~ et un". ". La partie de domaine suit des règles similaires. p>
Compte tenu de la flexibilité, le moyen le plus simple peut simplement être une vérification de chaîne à dire qu'il a un seul '@', puis cochez la boîte aux lettres et les pièces de domaine séparément pour voir s'ils contiennent des caractères pas em> in l'ensemble ci-dessus. Si cela est effectué avec une refente ou une autre manière est votre propre choix. P> addr-spec code> et
dot-atome code>. p>
Le meilleur moyen serait de transmettre cette tâche de validation à .NET elle-même: accordé, il incendiera des faux positifs sur certaines adresses électroniques techniquement valides (avec des caractères non latins, pour Exemple), mais comme il ne sera pas en mesure d'envoyer à ces adresses, vous pouvez aussi bien les filtrer à partir du début. P> p>
IsvalidemailAddress retourne vrai même si le TLD est manquant. par exemple. myName @ myCompany réussit.
@Mark Maslar: Oui, je sais. Ce sont des adresses électroniques valides, bien que vous n'en obteniez généralement pas un de ceux-ci.
J'ai utilisé la regex à partir d'un plugin JQuery qui valide du côté du client: @ "^ (((([! # \ d | \ $% & '* + - / = \? \ ^ {\ |} ~] | [\ u00a0- \ ud7ff \ ufdf0- \ ufff]) + ([[[AZ] | \ d | [! # \ $% & '\ * \ + \ - \ / = \? \ ^ _ code> {\ |} ~] | [\ u00a0- \ ud7ff \ uf900- \ ufdcf \ ufdf0 - \ uffef]) +) *) | ((\ x22) (((((\ x20 | \ x09) * (\ x0d \ x0a))? (\ x20 | \ x09) +)? \ x08 \ x0b \ x0c \ x0e- \ x1f \ x7f] | \ x21 | [\ x23- \ x5b] | [\ x5d- \ x7e] | [\ u00a0- \ ud7ff \ uf900- \ ufdcf \ ufdf0- \ uffef ]) | (\ ([\ x01- \ x09 \ x0b \ x0c \ x0d- \ x7f] | [\ u00a0- \ ud7ff \ ufdf0- \ ufff \ ufdf0- \ ufff])))) * (((((\ x20 | \ x09) * (\ x0d \ x0a))? (\ x20 | \ x09) +)? (\ x22))) @ ((([AZ] | \ D | [\ u00a0- \ ud7ff \ uf900- \ ufdcf \ ufdf0- \ uffef]) | ((az] | \ d | ufdf0- \ ufdcf \ ufdf0- \ ufdcf]) ([AZ] | \ D | - |. | em> | ~ | [\ u00a0- \ ud7ff \ uf900- \ ufdcf \ ufdf0- \ ufff]) ([az] | \ d | [\ u00a0- \ ud7ff \ ufdf0- \ ufff \ ufdf0- \ uffef ]))) ufdf0- \ uffef]) ([az] | \ d | - |. | _ | ~ | [\ u00a0- \ ufdcf \ ufdf0- \ ufff]) em> ([AZ] | [ \ u00a0- \ ud7ff \ uf900- \ ufdcf \ u FDF0- \ UFFF])))).? $ ",
Regexoptions.Compiled); p>
return regex.IsMatch(email);
}
en utilisant article de Chris ', j'ai fait une extension Méthode des chaînes qui lient une bibliothèque DnsLookup (crédit est donnée à Bill Andreozzi, billandr@towncallpass.com dans la source), la mise en œuvre de Telnet minimal de Tom Janssens ( http://www.corebvba.be ) et ma propre regex pour valider les adresses électroniques:
/// <summary> /// The regular expression to test the string against. /// </summary> private static readonly Regex validEmailRegex = new Regex( @"^(([^<>()[\]\\.,;:\s@\""]+" + @"(\.[^<>()[\]\\.,;:\s@\""]+)*)|(\"".+\""))@" + @"((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}" + @"\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+" + @"[a-zA-Z]{2,}))$", RegexOptions.Compiled); /// <summary> /// Determines whether the specified string is a valid email address. /// </summary> /// <param name="value"> /// The string to validate. /// </param> /// <returns> /// <c>true</c> if the specified string is a valid email address; /// otherwise, <c>false</c>. /// </returns> public static bool IsValidEmailAddress(this string value) { if (!validEmailRegex.IsMatch(value)) { return false; } var mailServer = new DNS().LookupMX(value.Split('@')[1]); if (!mailServer.MoveNext()) { return false; } var telnet = new TelnetConnection(((DNS_MX_DATA)((DNS_WRAPPER)mailServer.Current).dnsData).pNameExchange, 25); try { if (!TelnetCompare(telnet.Read(), "220")) { return false; } telnet.WriteLine("helo hi"); if (!TelnetCompare(telnet.Read(), "250")) { return false; } telnet.WriteLine("mail from: " + value); if (!TelnetCompare(telnet.Read(), "250")) { return false; } telnet.WriteLine("rcpt to: " + value); if (!TelnetCompare(telnet.Read(), "250")) { return false; } } finally { telnet.WriteLine("quit"); } return true; } /// <summary> /// Compares two strings for length and content from the Telnet stream. /// </summary> /// <param name="input">The input string.</param> /// <param name="response">The desired response.</param> /// <returns>true if the response is the first characters if the input, /// false otherwise</returns> private static bool TelnetCompare(string input, string response) { if (string.IsNullOrEmpty(input) || string.IsNullOrEmpty(response)) { return false; } if (input.Length < response.Length) { return false; } return string.CompareOrdinal(input.Substring(0, response.Length), response) == 0; }
private void textBox1_Validating(object sender, CancelEventArgs e) { System.Text.RegularExpressions.Regex rEMail = new System.Text.RegularExpressions.Regex(@"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$"); if (textBox1.Text.Length > 0) { if (!rEMail.IsMatch(textBox1.Text)) { MessageBox.Show("E-Mail expected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); textBox1.SelectAll(); e.Cancel = true; } } }
regex reg = nouvelle regex (@ "\ w + ([- +.] \ w +) @ \ w + ([-.] \ w +) em>. \ w + ([-.] \ w + ) * "); /// Initialisation de l'objet pour REGEX P> if (!reg.IsMatch(email.Text.Trim()))
{
errorProvider1.SetError(email, "Please provide a valid Email Address");
email.Focus();
return;
}
if (dateEdit1.EditValue == null || textEdit11.EditValue == null || textEdit10.EditValue == null || comboBox1.Text == null || textEdit12.EditValue == null || dateEdit2.EditValue == null || textEdit12.EditValue == null || comboBox2.Text == null || comboBox2.Text == null || textEdit14.EditValue == null || textEdit15.EditValue == null || textEdit16.EditValue == null || textEdit17.EditValue == null || textEdit18.EditValue == null || comboBox5.Text == null || textEdit19.EditValue == null) { XtraMessageBox.Show("Please submit the record"); } else { DialogResult dialog = XtraMessageBox.Show("Are you sure you want to remove this record?", "Delete Record", MessageBoxButtons.OKCancel, MessageBoxIcon.Question); if (dialog == DialogResult.OK) { String st = "DELETE FROM OutPatient WHERE OutPatientID =" + textEdit8.Text; SqlCommand com = new SqlCommand(st, con); con.Open(); try { com.ExecuteNonQuery(); } catch (SqlException) { con.Close(); } ClearOutPatient(); } else if (dialog == DialogResult.Cancel) { ClearOutPatient(); }
Essayez d'ajouter une explication écrite aux côtés de votre code
Valider le format d'adresse email? Valider qu'une adresse électronique existe? Valider qu'un email a été livré ou reçu? Valider le concept d'email? Quelle est la question ici?
C'est "pas une vraie question", les gens !!