Flux rss
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

Tester addresse mail en PHP

kij_82, le jeudi 28 avril 2005 à 14:59:45 
 Signaler ce message aux modérateurs

Bonjours,
je voudrais savoir s'il existe une solution PHP (ou autre) pour tester la validité d'une adresse mail ?

merci à tous.
++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

2

bacchuss, le jeudi 28 avril 2005 à 15:17:25
  • +1

Salut,

oui en javascript ca existe, c'est deja tout fait sur les sites de script javascript... __________________________________________
01001001110101001010100101 et plus si affinités

Répondre à bacchuss

3

kij_82, le jeudi 28 avril 2005 à 15:21:35

Oki, merci bien de cette précision. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

4

kij_82, le jeudi 28 avril 2005 à 16:06:07

J'ai beau cherché je trouve pas... c'est quoi l'adresse du site ou tu as vu le truc ? ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

5

bacchuss, le jeudi 28 avril 2005 à 16:15:57

Par exemple la : http://aliasdmc.free.fr/coursjavas/cours_javascript93.html
ou la : http://zdnet.allhtml.com/javascript/javascript492.php __________________________________________
01001001110101001010100101 et plus si affinités

Répondre à bacchuss

6

kij_82, le jeudi 28 avril 2005 à 16:21:06

Dsl de m'etre mal exprimé : valider la syntaxe d'une adresse amil, ca je sais faire, mais moi je voudrait tester si l'adresse correspond bien à une adresse qui existe en fait. ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

17

superjojo01, le dimanche 4 janvier 2009 à 13:48:41

Bonjour, si il est possible de le savoir car si l'adresse n'est pas utiliser tu reçois un message "delivrius"

Répondre à superjojo01

7

Luffy =), le jeudi 28 avril 2005 à 16:27:39

Ben à part lui envoyer un mail, je vois pas trop comment tu peux faire ça... faudrait voir avec le protocole smtp si c'est prévu, et comment fonctionne le serveur mail. Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

8

Nashouille, le jeudi 28 avril 2005 à 16:31:49

A priori le seul moyen d'être sur que l'adresse est valide est effectivement d'envoyer un mail et d'attendre la réponse.
Autrement les spammeurs seraient trop contents! Le fait qu'un serveur de ne réponde pas concernant la validité du mail constitue une protection contre le spam il me semble.

Répondre à Nashouille

9

Luffy =), le jeudi 28 avril 2005 à 16:35:19

Le fait qu'un serveur de ne réponde pas concernant la validité du mail constitue une protection contre le spam il me semble.

bien joué ! j'y avais pas pensé
Le Parisien, il vaut mieux l'avoir en journal !!! :-P

Répondre à Luffy =)

10

kij_82, le jeudi 28 avril 2005 à 16:36:16

C'est vrai.

merci pour vos réponses.

++ ~ iclic @ gauch,iclic,  iclic @ droate, iclic, iclic
             et ya pas de bôg môsieu !    ~

Répondre à kij_82

11

[Die_Master], le jeudi 1 juin 2006 à 02:09:06

Le seul moyen que j'ai trouvé est de se connecter au serveur smtp du domail de l'email et de faire un debut d'envoie de mail, au momentde valider l'adresse on auras une reponse du serveur sur l'existance ou non de cette adresse.

>>> MAIL FROM: <nobody@beer.com>
<<< 250 2.1.0 OK
>>> RCPT TO: <admin@gmail.com>
<<< 550 5.7.1 No such user w40si448162ugc
>>> RSET

adresse inexistante

>>> MAIL FROM: <nobody@beer.com>
<<< 250 2.1.0 OK
>>> RCPT TO: <diemaster@gmail.com>
<<< 250 2.1.5 OK
>>> RSET

adresse existante

Répondre à [Die_Master]

12

jisisv, le jeudi 1 juin 2006 à 14:42:16

Tu trouveras du code et des explications intéressantes
ici: http://www.devshed.com/c/a/PHP/Email-Address-Verification-wi­th-PHP/2

Johan Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Répondre à jisisv

13

P@, le vendredi 2 juin 2006 à 10:40:56

Est ce que ca marche pour vous ???
je viens de le mettre en place .. et soit tout passe, soit rien ne passe !!!
Je fais des modif ... mais pour l'instant c'est pas glorieux ... si vous avez des idées :D

j'utilise :

function checkEmail($email) {
 // checks proper syntax
 if(preg_match("/^( [a-zA-Z0-9] )+( [a-zA-Z0-9\._-] )*@( [a-zA-Z0-9_-] )+( [a-zA-Z0-9\._-] +)+$/" , $email)) {
  // gets domain name
  list($username,$domain)=split('@',$email);
  // checks for if MX records in the DNS
  if(!customCheckDnsrr($domain)) {
   return false;
  }
  // attempts a socket connection to mail server
  if(!fsockopen($domain,25,$errno,$errstr,30)) {
   return false;
  }
  return true;
 }
 return false;
}

function customCheckDnsrr($host,$recType='') {
 if(!empty($host)) {
  if($recType=='') $recType="MX";
  exec("nslookup -type=$recType $host",$output);
  foreach($output as $line) {
   if(preg_match("/^$host/", $line)) {
    return true;
   }
  }
  return false;
 }
 return false;
}
et pour l'appel
Function ControleContact($email,$nomorganisation,$service,$fonction){
	$msg="";
	if(empty($nomorganisation)):
		$msg .= "Le champs <B>Nom de l'organisation</B> est obligatoire<BR>";
	endif;
	if(!is_string($nomorganisation))
		$msg .= "Le champs <B>Nom de l'organisation</B> doit être une chaine de caractére<BR>";
	if(empty($service))
		$msg .= "Au moins une case <B>service</B> doit être cochée<BR>";
	if(empty($fonction))
		$msg .= "Une <B>fonction</B> doit être séléctionnée<BR>";
	if(empty($email))
    $msg .="Le champ <B>email</B> est obligatoire<BR>";
    else
/*
** C'est là que commence réellement l'appel
*/
$email = trim($email);  
if(!checkEmail($email)) { 
echo 'Invalid email address!';
$msg .='Invalid email address!';
}
else {
 echo 'Email address is valid';
}    
/*
** C'est là que fini réellement l'appel
*/

	return ($msg);
}
..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

14

jisisv, le vendredi 2 juin 2006 à 11:29:00
  • +2

Voui, il y a des erreurs dans le code. Il y a des espaces inutiles dans l'expression régulière. Je me rappelle que j'ai du corriger quelques erreurs dans le code.

<?php
  /**
   * Check validity of e-mail
   *
   * @param string email
   * @return boolean
   */
function checkemail($email)
{
  define('TIMEOUT', '5');
  define('SMTP_PORT', '25');
  // see http://www.devshed.com/c/a/PHP/Email-Address-Verification-with-PHP/2/
  // checks proper syntax

  if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/" , $email))
    {
      //printf('%s: %d<br />', __FILE__,  __LINE__);
      return false;
    }

  // gets domain name
  list($username,$domain)=split('@',$email);
  // checks for if MX records in the DNS
  $mxhosts = array();
  if(!getmxrr($domain, $mxhosts)) {
    // no mx records, ok to check domain
    if (!@fsockopen($domain, SMTP_PORT, $errno, $errstr, TIMEOUT))
      {
.....



Johan Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Répondre à jisisv

P@, le vendredi 2 juin 2006 à 12:09:30
  • +2

En faisant des recherches sur fsockopen j'ai trouvé ce script qui aprés l'avoir testé me va trés bien ... si ca peut servir :D
origine de script avant modification http://fr3.php.net/getmxrr

function validate_email($email){
   $mailparts=explode("@",$email);
   $hostname = $mailparts[1];

   // validate email address syntax
   $exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
   $b_valid_syntax=eregi($exp, $email);

   // get mx addresses by getmxrr
   $b_mx_avail=getmxrr( $hostname, $mx_records, $mx_weight );
   $b_server_found=0;

   if($b_valid_syntax && $b_mx_avail){
     // copy mx records and weight into array $mxs
     $mxs=array();


     for($i=0;$i<count($mx_records);$i++){
     $em1 = array_pop($mx_weight);
     $em2 = array_pop($mx_records);
       $mxs[$em1]=$em2;
     }

     // sort array mxs to get servers with highest prio
     ksort ($mxs, SORT_NUMERIC );
     reset ($mxs);

     while (list ($mx_weight, $mx_host) = each ($mxs) ) {
       if($b_server_found == 0){

         //try connection on port 25
         $fp = @fsockopen($mx_host,25, $errno, $errstr, 2);
         if($fp){
           $ms_resp="";
           // say HELO to mailserver
           $ms_resp.=send_command($fp, "HELO microsoft.com");

           // initialize sending mail
           $ms_resp.=send_command($fp, "MAIL FROM:<support@microsoft.com>");

           // try receipent address, will return 250 when ok..
           $rcpt_text=send_command($fp, "RCPT TO:<".$email.">");
           $ms_resp.=$rcpt_text;
          
           if(substr( $rcpt_text, 0, 3) == "250")
             $b_server_found=1;

           // quit mail server connection
           $ms_resp.=send_command($fp, "QUIT");

         fclose($fp);

         }

       }
   }
  }
  return $b_server_found;
}

function send_command($fp, $out){

  fwrite($fp, $out . "\r\n");
  return get_data($fp);
}

function get_data($fp){
  $s="";
  stream_set_timeout($fp, 2);

  for($i=0;$i<2;$i++)
   $s.=fgets($fp, 1024);

  return $s;
}

// support windows platforms
if (!function_exists ('getmxrr') ) {
  function getmxrr($hostname, &$mxhosts, &$mxweight) {
   if (!is_array ($mxhosts) ) {
     $mxhosts = array ();
   }

   if (!empty ($hostname) ) {
     $output = "";
     @exec ("nslookup.exe -type=MX $hostname.", $output);
     $imx=-1;

     foreach ($output as $line) {
       $imx++;
       $parts = "";
       if (preg_match ("/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.*)$/", $line, $parts) ) {
         $mxweight[$imx] = $parts[1];
         $mxhosts[$imx] = $parts[2];
       }
     }
     return ($imx!=-1);
   }
   return false;
  }
}


et l'appelle toujours :
Function ControleContact($email,$nomorganisation,$service,$fonction){
	$msg="";
  $email = trim($email);  
	if(empty($nomorganisation)):
		$msg .= "Le champs <B>Nom de l'organisation</B> est obligatoire<BR>";
	endif;
	if(!is_string($nomorganisation))
		$msg .= "Le champs <B>Nom de l'organisation</B> doit être une chaine de caractére<BR>";
	if(empty($service))
		$msg .= "Au moins une case <B>service</B> doit être cochée<BR>";
	if(empty($fonction))
		$msg .= "Une <B>fonction</B> doit être séléctionnée<BR>";
	if(empty($email))
    $msg .="Le champ <B>email</B> est obligatoire<BR>";
  elseif(!ereg("^(.+)@(.+)\\.(.+)$",$email))
    $msg .="Le champ <B>email</B> est obligatoire 22<BR>";
  elseif(validate_email($email) == 0) {
    echo 'Invalid email address!';
    $msg .='Invalid email address!';
    }
  else {
     echo 'Email address is valid';
    }    
	return ($msg);
}
..:::P@ ... a tras, a PoOf ou a chou :::..

Répondre à P@

15

P@, le lundi 12 juin 2006 à 11:12:47
  • +2

J'ai des souci avec la fonction getmxrr voici son code ...
je ne comprend pas

// support windows platforms
if (!function_exists ('getmxrr') ) {
  function getmxrr($hostname, &$mxhosts) {
   if (!is_array ($mxhosts) ) {
     $mxhosts = array ();
   }

   if (!empty ($hostname) ) {
   echo "$hostname n'est pas vide !!<br>";
     $output = "";
     @exec ("nslookup.exe -type=MX $hostname.", $output);
     $imx=-1;

     foreach ($output as $line) {
       $imx++;
       $parts = "";
       if (preg_match ("/^$hostname\tMX preference = ([0-9]+), mail exchanger = (.*)$/", $line, $parts) ) {
//         $mxweight[$imx] = $parts[1];
         $mxhosts[$imx] = $parts[2];
       }
     }
     return ($imx!=-1);
   }
   return false;
  }
}

il me renvoie quasi tout le temps false et va savoir pourquoi avec la même adresse si la trouve vraie !!!
si quelqu'un pouvait m'aider ... merci :D ..:::P@ ... a tras, a PoOf ou a chou :::..
L'imagination est plus importante que la connaissance. Albert Einstein

Répondre à P@

16

mazo0012, le samedi 3 janvier 2009 à 21:31:35

Bonjour,

J'ai été blacklisté après 2 jours d'utilisation du script ci-dessus http://www.commentcamarche.net/forum/affich 1478518 tester addresse mail en php#14

Avez-vous le même problème ?

Répondre à mazo0012

18

 paprodutou, le lundi 26 janvier 2009 à 03:23:39

Bonjour,

moi ce que je propose de faire est de créer dans ta base de donné dans ton tableau utilisateur deux colonne que tu nommera verifemail et verifemail2 par exemple.
la première colonne contiendra une valeur que tu attribuera a ton utilisateur lors de son inscription de façons aleatoire
par ex: dtfrc
tu lui envoie un email de confirmation dans lequel tu lui mais un URL dans laquel il rentrera son login et la valeur de verifemail que tu stockera dans verifemail2. si la valeur dans verifemail2 et la meme que dans verifemail alors il a bien eu et lu ton mail si il n'y a rien dans verifemail2 alors il n'a pas fait valider sont email donc ce qu'il te suffira de faire c'est de temps en temps ou avec un timer supprimé tout les lignes de tableau dans les quelles Verifemail2 sera null.

il faut biensur testé la validité de verifemail2 dans la pages sur laquelle tu l'a redirigé a travers ton mail de verification sinon il pourrais mettre des valeurs quelconque qui seront accepté et se connecté tant que tu n'aura pas supprimé sont login mais bon c juste un test pour la logique. parceque si il n'a pas ton mail il n'a pas l'URL donc pas de verifemail2 .

je ne l'ai pas encore testé mais en théorie sa devrait marché
si quelqu"un a une idée dans ce sens sa peut servir

Répondre à paprodutou
Comment envoyer une page html par mail php Bonjour je suis nouvelle dans ce domaine et je voudrais envoyer une page html par mail php, il me manque quelque chose pour envoyer des pages html et je ne veux pas passer par outlook ni par internet explorer, et s'il il faut rajouter des lignes de... www.commentcamarche.net/forum/affich-2426650-comment-envoyer-une-page-html-par-mail-php
[php]mail(); existante , test si envoi possib Bonjour, J'ai un script d'envoi de mail pour un formulaire de contact. Dans le cas ou la fonction mail est active le mail part sans encombre a partir d'un hebergement , en local le mail ne part pas , mais cela n'est pas le probleme. En effet je... www.commentcamarche.net/forum/affich-4952584-php-mail-existante-test-si-envoi-possib
Mail() php probléme d'accent dans sujet (Résolu) Bonjour, J'ai un problème (souvent évoqué I Know!) J'envoi un mail (en php) dont les éléments sont importé depuis une base postgresql. Le corps du message (qui contient des caractères accentués) est correct a la reception de e-mail. Mais le sujet me... www.commentcamarche.net/forum/affich-7033714-mail-php-probleme-d-accent-dans-sujet
[PHP] Fonction mail()La fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez... www.commentcamarche.net/faq/sujet-117-php-fonction-mail
[PHP] Vérifier le format d'une adresse mailIl existe plusieurs manières de déterminer si une variable contient une adresse email valide. Ces techniques ne vérifient pas si l'adresse email existe bien mais elles déterminent si la chaine contenue dans une variable respecte bien le format d'une... www.commentcamarche.net/faq/sujet-855-php-verifier-le-format-d-une-adresse-mail
[Langages] Envoyer un mail avec pièce jointeLes mails, tout comme les pages web, sont livrés avec des en-têtes (headers en anglais). Ces en-têtes servent à donner quelques détails nécessaires comme l'adresse du destinataire, celle de l'envoyeur, la date de l'envoi, le sujet du mail etc. Elles... www.commentcamarche.net/faq/sujet-2761-langages-envoyer-un-mail-avec-piece-jointe
Formulaire mail() en PHP avec hébergeur OVHBonjour, voilà la fonction mail() de mon code mail.php ne marche pas c'est t'à dire que je ne reçois aucun mail sur ma boite aux lettres. Voilà mon code en entier, SVP corriger moi les erreurs pour que cela marche... (ps:je n'ai pas trouvé de solution... www.commentcamarche.net/forum/affich-7110728-formulaire-mail-en-php-avec-hebergeur-ovh
PHP : BCC fonction mail() PHPBonjour. J'ai créé un form mail en php en utilisant le BCC. Le problème c'est que le mail arrive aux 2 adresses, mais pas en BCC. En fait, l'adresse 1 voit que l'adresse 2 faisait elle aussi partie des destinataires. Ci-dessous le code de mon header... www.commentcamarche.net/forum/affich-2547024-php-bcc-fonction-mail-php
Page retour envoi formulaire mail PHPBonjour, Comment se programme la page retour suite à l'envoi d'un formulaire par mail en PHP dans les 2 cas : - "Votre mail a été envoyé" = Page A - "Une erreur s'est produite" = Page B ? Voici le code : -----------------------------------------------... www.commentcamarche.net/forum/affich-11814483-page-retour-envoi-formulaire-mail-php
PHP - Mail et fonctions réseauPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est... www.commentcamarche.net/contents/php/phpmail.php3