Fonction mail
papyclic
Messages postés
446
Date d'inscription
Statut
Membre
Dernière intervention
-
roussos Messages postés 221 Date d'inscription Statut Membre Dernière intervention -
roussos Messages postés 221 Date d'inscription Statut Membre Dernière intervention -
Bonjour
Après avoir enregistrer les membres il recoivent un mail pour activer leurs comptes.
J'ai une erreur mais je n'arrive pas à comprendre, mon fichier PHP.ini a l'air d'être bien configurer.
Par contre l'INSERT du membre ça se passe bien.
Pouvez-vous s'ils vous plait regarder voir ce qui ne va pas.
Je suis en local, sous wamp windows7.
l'erreur retournée
Je vous remercie beaucoup
Mon fichier PHP.ini
Le script de vérification
Après avoir enregistrer les membres il recoivent un mail pour activer leurs comptes.
J'ai une erreur mais je n'arrive pas à comprendre, mon fichier PHP.ini a l'air d'être bien configurer.
Par contre l'INSERT du membre ça se passe bien.
Pouvez-vous s'ils vous plait regarder voir ce qui ne va pas.
Je suis en local, sous wamp windows7.
l'erreur retournée
Warning: mail() [function.mail]: SMTP server response: 503 5.5.0 need RCPT before DATA in C
Je vous remercie beaucoup
Mon fichier PHP.ini
[mail function] ; For Win32 only. ; http://php.net/smtp SMTP = smtp.orange.fr ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = monsite@orange.fr
Le script de vérification
$PARAM = array ( 'ID_ADHERENT' => isset($_REQUEST['id_adherent']) ? $_REQUEST['id_adherent'] : '', 'NOM' => isset($_POST['nom']) ? Security::clean(strtoupper($_POST['nom'])) : '', 'PRENOM' => isset($_POST['prenom']) ? Security::clean(ucfirst($_POST['prenom'])) : '', 'EMAIL' => isset($_POST['email']) ? Security::clean($_POST['email']) : '', 'NAISSANCE' => isset($_POST['naissance_3']) ? Security::clean($_POST['naissance_3']) . '-' . Security::clean($_POST['naissance_2']) . '-' . Security::clean($_POST['naissance_1']) : '', 'FIXE' => isset($_POST['fixe']) ? $_POST['fixe'] : '', 'MOBILE' => isset($_POST['mobile']) ? $_POST['mobile'] : '', 'ADRESSE' => isset($_POST['adresse']) ? Security::clean(ucfirst($_POST['adresse'])) : '', 'LIEU_DIT' => isset($_POST['lieu_dit']) ? Security::clean(ucfirst($_POST['lieu_dit'])) : '', 'CODE_POSTAL' => isset($_POST['code_postal']) ? $_POST['code_postal'] : '', 'VILLE' => isset($_POST['ville']) ? Security::clean(strtoupper($_POST['ville'])) : '', 'PSEUDO' => isset($_POST['pseudo']) ? Security::clean(strtolower($_POST['pseudo'])) : '', 'PASSWORD' => isset($_POST['password']) ? Security::clean($_POST['password']) : '', 'ACTIF' => isset($_POST['actif']) ? Security::clean(strtolower($_POST['actif'])) : '', 'DEBUT' => isset($_POST['debut']) ? Security::clean(strtolower($_POST['debut'])) : '', 'FIN' => isset($_POST['fin']) ? Security::clean(strtolower($_POST['fin'])) : '', 'TOKEN' => isset($_POST['token']) ? Security::clean($_POST['token']) : '' ); if (isset($_REQUEST['action']) AND !empty($_REQUEST['action'])) { switch($_REQUEST['action']) { case 'ajouter': //on sélectionne la table utilisateur et on cherche toutes les personnes portant le même nom et prénom et qui est membre actif $resultats = $bdd->query("SELECT * FROM tb_adherent WHERE nom = '". $PARAM['NOM'] ."' AND prenom = '". $PARAM['PRENOM'] ."' AND actif = '1'"); //on recupére le resultat de la requète dans un tableau $donnees $donnees = $resultats->fetch(); //si le nom est vide on insert... if (empty ($donnees['nom'])) { $verif = $bdd->prepare("SELECT pseudo FROM tb_adherent WHERE pseudo = :pseudo AND actif = '1'"); $verif->execute(array('pseudo' => $_POST['pseudo'])); $count = $verif->rowCount(); if ($count > 0) { $errors[] = 'Ce Pseudo est déjà utilisé, veuillez en choisir un autre...<br/>'; echo output_errors($errors); } else { $sql = 'INSERT INTO tb_adherent (nom, prenom, email, naissance, fixe, mobile, adresse, lieu_dit, code_postal, ville, pseudo, password, actif, debut, fin, token) VALUES (:nom, :prenom, :email, :naissance, :fixe, :mobile, :adresse, :lieu_dit, :code_postal, :ville, :pseudo, :password, :actif, :debut, :fin, :token)'; $requete = $bdd->prepare($sql); $requete->bindParam(':nom', $PARAM['NOM']); $requete->bindParam(':prenom', $PARAM['PRENOM']); $requete->bindParam(':email', $PARAM['EMAIL']); $requete->bindParam(':naissance', $PARAM['NAISSANCE']); $requete->bindParam(':fixe', $PARAM['FIXE']); $requete->bindParam(':mobile', $PARAM['MOBILE']); $requete->bindParam(':adresse', $PARAM['ADRESSE']); $requete->bindParam(':lieu_dit', $PARAM['LIEU_DIT']); $requete->bindParam(':code_postal', $PARAM['CODE_POSTAL']); $requete->bindParam(':ville', $PARAM['VILLE']); $requete->bindParam(':pseudo', $PARAM['PSEUDO']); $requete->bindParam(':password', Security::hash($PARAM['PASSWORD'])); $requete->bindParam(':actif', $PARAM['ACTIF']); $requete->bindParam(':debut', $PARAM['DEBUT']); $requete->bindParam(':fin', $PARAM['FIN']); $requete->bindParam(':token', $PARAM['TOKEN']); $requete->execute(); $to = $PARAM['EMAIL']; $sujet = 'Activation de votre compte'; $body = 'Bonjour, veuillez activer votre compte en cliquand ici -> <a href="http//localhost/monsite/activate.php?token'.$PARAM['TOKEN'].'&email'.$to.'">Activation du compte</a>'; $entete = "MIME=Version: 1.0\r\n"; $entete .= "Content-type: text/html; charset=UTF-8\r\n"; $entete .= 'From: monsite.fr' . "\r\n" . 'Reply-To: papyclic@orange.fr' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $sujet, $body, $entete); $errors[] = 'Bravo, le membre a bien été enregistré'; echo output_errors($errors); } } else { $errors[] = "Ce membre existe déjà....<br/>"; echo output_errors($errors); } break; } }
A voir également:
- Fonction mail
- Fonction si et - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
- Créer une adresse mail hotmail - Guide
- Comment télécharger un mail - Guide
2 réponses
Bonjour,
ton erreur est tout à fait logique, vu que tu es en local et que tu demandes un envoi de mail, à moins que ton poste soit le serveur smtp ( monsite@orange.fr ) comme mentionné dans ton script php.
Essayes de publier ton site en ligne et réessayes ton code.
Bon courage.
ton erreur est tout à fait logique, vu que tu es en local et que tu demandes un envoi de mail, à moins que ton poste soit le serveur smtp ( monsite@orange.fr ) comme mentionné dans ton script php.
Essayes de publier ton site en ligne et réessayes ton code.
Bon courage.
Bonjour,
Roussos : Il est tout à fait possible d'envoyer un mail depuis son poste LOCAL ..
@Papyclic :
Déjà, première chose à faire lorsque tu as un souci.... faire du débogage ....
As tu regardé si tes variables sont bonnes ? (via des ECHO ?? )
Je te propose de tester ça :
Par contre... pour ma part .. je préfère utiliser la class PHPMailer plutôt que la fonction MAIL de PHP.
Roussos : Il est tout à fait possible d'envoyer un mail depuis son poste LOCAL ..
@Papyclic :
Déjà, première chose à faire lorsque tu as un souci.... faire du débogage ....
As tu regardé si tes variables sont bonnes ? (via des ECHO ?? )
Je te propose de tester ça :
echo "<br> TO : ".$to; echo "<br> SUJET : ".$sujet; echo "<br> ENTETE : ".$entete; if(mail($to, $sujet, $body, $entete)){ echo "<pre> MAIL ENVOYE ...</pre>"; }else{ echo "<pre> ERROR ! Mail non envoyé </pre>"; print_r(error_get_last()); }
Par contre... pour ma part .. je préfère utiliser la class PHPMailer plutôt que la fonction MAIL de PHP.