6
votes

Validation du courrier électronique dans une application C # Winforms

salut hi comment puis-je valider le courrier électronique dans c # winforms?


2 commentaires

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 !!


11 Réponses :


2
votes

Cette page a une bonne expression régulière correspondant aux adresses e-mail.

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.

Et même si cela réussit, le serveur SMTP peut être configuré pour ignorer les adresses de destinataires non valides.


0 commentaires

0
votes

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


0 commentaires

11
votes

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


1 commentaires

Cela ne fonctionnera que s'il est insensible à la casse. Inclure regexoption.ignorecase



1
votes

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.

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.


1 commentaires

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 #



0
votes

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.

Section 3.4 de RFC2822 définit entièrement une adresse e-mail valide : Recherchez la spécification pour addr-spec et dot-atome .

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.

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 in l'ensemble ci-dessus. Si cela est effectué avec une refente ou une autre manière est votre propre choix.


0 commentaires

9
votes

Le meilleur moyen serait de transmettre cette tâche de validation à .NET elle-même: xxx

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.


2 commentaires

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.



0
votes

J'ai utilisé la regex à partir d'un plugin JQuery qui valide du côté du client: xxx pré>

@ "^ (((([! # \ 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);
}


0 commentaires

0
votes

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;
}


0 commentaires

0
votes
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;
}
}
}

0 commentaires

0
votes

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;

        }


0 commentaires

0
votes
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();
    }

1 commentaires

Essayez d'ajouter une explication écrite aux côtés de votre code