Plus que RFC 822 ou RFC 2822 ?

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par ortolojf, 28 Octobre 2018.

  1. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 789
    J'aime reçus:
    8
    Bonjour

    J'ai une fonction de validation des adresses email du type : "From" ouTo" etc dans un mail envoyé ( type MIME évidemment ), dans mon soft pratiquement au point, mais cette fonction ne permet pas les caractères accentués dans le nom ( $from_regex ), alors que des noms ( pas des adresses emails ), pourraient en contenir.

    Quelle RFC mettre en oeuvre pour celà ?

    Merci beaucoup pour votre aide.


    PHP:

    <?php
        
    function validate_email($email)
        {
            
    $email_matches = array();
            
    $from_regex   '[a-zA-Z0-9_,\s\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+';
            
    $user_regex   '[a-zA-Z0-9_\-\.\+\^!#\$%&*+\/\=\?\`\|\{\}~\']+';
            
    $domain_regex '(?:(?:[a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.?)+';
            
    $ipv4_regex   '[0-9]{1,3}(\.[0-9]{1,3}){3}';
            
    $ipv6_regex   '[0-9a-fA-F]{1,4}(\:[0-9a-fA-F]{1,4}){7}';
            
    preg_match("/^$from_regex\s\<(($user_regex)@($domain_regex|(\[($ipv4_regex|$ipv6_regex)\])))\>$/"$email$matches_2822);
            
    preg_match("/^($user_regex)@($domain_regex|(\[($ipv4_regex|$ipv6_regex)\]))$/"$email$matches_normal);
            
    // Check for valid email as per RFC 2822 spec.
            
    if (empty($matches_normal) && !empty($matches_2822) && !empty($matches_2822[3])) {
                
    $email_matches['from_name'] = $matches_2822[0];
                
    $email_matches['full_email'] = $matches_2822[1];
                
    $email_matches['email_name'] = $matches_2822[2];
                
    $email_matches['domain'] = $matches_2822[3];
            }
            
    // Check for valid email as per RFC 822 spec.
            
    if (empty($matches_2822) && !empty($matches_normal) && !empty($matches_normal[2])) {
                
    $email_matches['from_name'] = '';
                
    $email_matches['full_email'] = $matches_normal[0];
                
    $email_matches['email_name'] = $matches_normal[1];
                
    $email_matches['domain'] = $matches_normal[2];
            }
            return 
    $email_matches;
        }
    ?>

     
  2. colonies
    colonies WRInaute occasionnel
    Inscrit:
    10 Septembre 2006
    Messages:
    441
    J'aime reçus:
    36
    Tu as combien de contacts dont l'adresse email a un nom de domaine contenant un caractère accentué ?
    Oh, surprise : zéro.

    Épargne-nous tes messages pseudo-techniques sur des points de détails (car celui-ci n'est qu'un parmi de nombreux autres du même genre), ça fait vraiment noob qui veut se la jouer.
     
    spout apprécie ceci.
  3. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 789
    J'aime reçus:
    8
    Monsieur

    Le "$from_regex" n'est pas du tout le nom de domaine. C'est le prénom/nom avant l'email.

    La RFC 2822 permet un format du type : "Prénom Nom <adresse_email>"

    Le problème porte à la fois sur la RFC et la fonction.

    Si rien n'est prévu pour les accents, comment j'envoie à quelque chose comme :
    "Jean François Ortolo <mon _email@etc.fr>" ( avec cédille sous le c ) ?

    Les prénoms/noms accentués çà n'existe pas ?

    Merci beacoup de vos réponses.

    Amicalement.
     
  4. ABCWEB
    ABCWEB WRInaute impliqué
    Inscrit:
    22 Octobre 2015
    Messages:
    634
    J'aime reçus:
    47
    Pourquoi avoir voulu toucher au nom et prénom?
     
  5. ortolojf
    ortolojf WRInaute accro
    Inscrit:
    14 Août 2002
    Messages:
    2 789
    J'aime reçus:
    8
    Bonjour ABCWEB

    Mon software ( petit équivalent de SwiftMailer ), est terminé ( phase alpha / mise au point pratiquement complète ), mais je bute sur la fonction de validation, théoriquement compliante RFC 2822 ou RFC 822 ( avec ou sans prénom/nom avant l'email ).

    la RFC 2822 met tout en ASCII. Je comprend celà pour les emails, mais pas pour les prénoms /noms ?

    Bien amicalement.
     
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice