Achetez et vendez votre matériel multimédia d'occasion sur notre service de petites annonces informatiques gratuites

Besoin de votre aide : Formulaire PHP et envoi par email !!

Forum informatique > Aide création et gestion de site > Besoin de votre aide : Formulaire PHP et envoi par email !!

<<<12>>>

[Page 1 sur 2 - 19 messages]
Informations Messages

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 14h13

Bonjour à tous,

Je viens de suivre un tuto pour créer un formulaire php avec envoi par mail et lors de l'envoi du mail, j'ai l'erreur mentionnée dans le tuto "

Citation

Warning: mail() [function.mail]: SMTP server response: 501 Your domain does not seem to be valid. Could not find MX record for your domain. in ******. Une erreur est survenue lors de l'envoi du formulaire par email

". Mon hébergeur est Amen.

J'ai eu beau chercher une aide sur internet, et chez amen...
Quelqu'un peut m'aider please ?

Merci beaucoup

 

Touk

Avatar de Touk
109 messages
DVD-RW
DVD-RW

Lien direct Le 17 Juin 2009 à 15h23

Bonjour sevsev,

je te conseille d'aller faire un tour sur le forum d'Amen où on trouve par exemple cette réponse :

Citation

Auteur: Didier S. (---.pf.amen.fr,)
Date: 20-10-2008 23:03

J'ai eu la même erreur et je viens de comprendre à l'instant l'origine du problème.

Le message d'erreur qui apparaissait dans mon cas est :
Warning: mail() [function.mail]: SMTP server response: 501 Your domain does not seem to be valid. Could not find MX record for your domain

Et cela est dû au fait que dans le 3ème paramètre de la fonction mail, après le "From: ", le script mets une variable qui contient un nom de société (et non pas une adresse e-mail) .
Auparavant cela fonctionnait.
Avec la nouvelle version de PHP, ce n'est apparemment plus autorisé.
J'ai donc du mettre une adresse e-mail après le From pour corriger l'erreur (la même adresse qu'il y a après le ReplyTo)



(Source : <!-- m --><a class="postlink" href="https://fr.amenworld.com/forum/read.php?f=4&i=54935&t=54715" onclick="window.open(this.href);return false;">https://fr.amenworld.com/forum/read.php ... 35&t=54715</a><!-- m -->)

Bon courage Cool

 

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 15h34

Merci, mais j'ai déjà consulté ce poste, en fait j'ai déjà consulté le forum d'amen. C'est d'ailleurs dessus que j'ai repris le code php...

 

Touk

Avatar de Touk
109 messages
DVD-RW
DVD-RW

Lien direct Le 17 Juin 2009 à 15h36

Ok, dans ce cas ce serait plus facile de voir ton code source, du moins la partie qui utilise la fonction mail() (tu peux mettre des * sur les donnees sensibles, s'il y en a), sans celui ci impossible de te dire ce qui clocheSourire

 

Pouzy

Avatar de Pouzy
14137 messages
No-Life
No-Life
Administrateur
Administrateur

Lien direct Le 17 Juin 2009 à 15h40

Coucou,

Oui, normalement la fonction mail() ne pose pas de problème par rapport au serveur SMTP, donc tu as peut être une ligne en trop qui tente de redéfinir le serveur SMTP, ce qui le rend pas content :applaudis:

Devenez fan d'Aidoweb sur Facebook \o/ - N'oubliez pas de cliquer sur [Résolu] une fois votre problème réglé
 

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 15h42

ok voici mon code :

Citation

<?php
// Information qui apparaittra si les champs obligatoires ne sont pas remplis
$msg_erreur = "Erreur. Les champs suivants doivent être obligatoirement remplis :<br/><br/>";

// Information qui apparaittra si les 2 messages ont bien été envoyé
$msg_ok = "Votre demande a bien été prise en compte. Elle sera traitée dans les meilleurs délais.\nUn mail de confirmation vous a été envoyé.";
$message = $msg_erreur;
define('MAIL_DESTINATAIRE','jai mis mon @ mail'); // remplacer par votre email
define('MAIL_SUJET','Demande de renseignement'); // remplacer l'objet du mail qui sera envoyé

// vérification des champs obligatoires (doublon avec le script si des champs obligatoires incorporés dans le formulaire)
if (empty($_POST['requiredCommentaires']))
$message .= "Votre nom<br/>";

if (strlen($message) > strlen($msg_erreur)) {
echo $message;
// sinon c'est ok
} else {
foreach($_POST as $index => $valeur) {
$$index = stripslashes(trim($valeur));
}

//Préparation de l'entête du mail:
$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['requiredNom']} "
."<{$_POST['requiredEmail']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";


// Préparation du corps du mail

// Remplacer le nom des variables suivantes par les noms de vos variables (name ou id) du formulaire
// Utiliser \n pour aller à la ligne
$mail_corps = "Demande de : $requiredNom $Prenom \n";
$mail_corps .= "Téléphone : $Telephone \n";
$mail_corps .= "E mail : $requiredEmail\n";
$mail_corps .= "Commentaires : $requiredCommentaires\n";


// envoi du mail
if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
//Le mail est bien expédié
echo $msg_ok;
} else {
//Le mail n'a pas été expédié
echo 'Une erreur est survenue lors de l\'envoi du formulaire par email';
}

}
// Message de confirmation de reception de demande
// ---------------------------

/* Objet */ // Mettre votre nom de domaine
$subject = "Confirmation de votre demande sur [url=http://www.lepartenairemedical.fr" onclick="window.open(this.href);return false;]www.lepartenairemedical.fr[/url]";

/* additional header pieces for errors, From cc's, bcc's, etc */
// Adresse mail (variable du formulaire contact)
$headers = "From: $requiredEmail <$requiredEmail>\n";





// Remplacer le mail suivant par votre mail
$headers .= "X-Sender: <jai mis mon @ mail>\n";
$headers .= "X-Mailer: PHP\n"; // mailer
$headers .= "X-Priority: 1\n"; // Urgent message!

// Remplacer le mail suivant par votre mail
$headers .= "Return-Path: Sales <jai mis mon @ mail>\n"; // Return errors

/* recipients */
$recipient = $requiredEmail;

/* message */
// Remplacer le contenu du message suivant par celui qui vous convient
// Vous pouvez à l'intérieur de celui-ci rappeller les variables en mettant $nom etc...
$message = "Bonjour $requirednom

Merci pour votre message.
Nous traiterons votre demande dans les plus bref delais.
Cordialement.

Rappel de vos informations personnelles:
------------------------------
Votre nom: $requiredNom
Votre prénom : $Prenom
Votre téléphone: $prenom
Votre e-mail : $Telephone
votre Email: $requiredEmail;



-------------------------------
";


mail($recipient, $subject, $message, $headers);
?>

 

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 15h43

Juste un précision, les erreur indiquées lorsque j'envoi le formulaire sont ces 2 lignes :

if (mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete)) {
et
mail($recipient, $subject, $message, $headers);


Encore merci !!!

 

Pouzy

Avatar de Pouzy
14137 messages
No-Life
No-Life
Administrateur
Administrateur

Lien direct Le 17 Juin 2009 à 15h57

Coucou,

Essaie en remplaçant les entêtes actuels :

Code

$mail_entete = "MIME-Version: 1.0\r\n";
$mail_entete .= "From: {$_POST['requiredNom']} "
."<{$_POST['requiredEmail']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n";
$mail_entete .= 'Content-Type: text/plain; charset="iso-8859-1"';
$mail_entete .= "\r\nContent-Transfer-Encoding: 8bit\r\n";
$mail_entete .= 'X-Mailer:PHP/' . phpversion()."\r\n";



Par :

Code


$mail_entete .= "From: {$_POST['requiredNom']} "
."<{$_POST['requiredEmail']}>\r\n";
$mail_entete .= 'Reply-To: '.$_POST['mail']."\r\n";



Et pareil pour $headers

Pour moi, y a trop de trucs définis dans l'entête, p'tête que c'est pas les mêmes choses que ce que le serveur veut entendre :o

Devenez fan d'Aidoweb sur Facebook \o/ - N'oubliez pas de cliquer sur [Résolu] une fois votre problème réglé
 

Touk

Avatar de Touk
109 messages
DVD-RW
DVD-RW

Lien direct Le 17 Juin 2009 à 16h00

Re,

je suis assez d'accord avec la réponse de Pouzy ton en-tête ne me parait pas correcte. Si le code de Pouzy ne fonctionne pas tu peux essayer celui ci en n'oubliant pas de remplacer VOTRE ADRESSE EMAIL, par ton adresse mail :

Code


<?php
$headers = 'From: VOTRE ADRESSE MAIL' . "\r\n" .
'Reply-To: VOTRE ADRESSE MAIL' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail("VOTRE ADRESSE MAIL","test mail","Fonction mail() OK", $headers) == true)
{ echo "ok, mail envoyé"; }
else
{ echo "erreur"; }
?>



Bon courage Cool

 

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 18h03

ok merci beaucoup !!! j'essaie de suivre vos conseil... :mrgreen:

 

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 18h14

Bon...et bien ça ne marche toujours pas. Quand j'envoie le formulaire, il m'indique toujours les 2 mêmes erreurs !!!

Citation

Warning: mail() [function.mail]: SMTP server response: 501 Your domain does not seem to be valid. Could not find MX record for your domain. in D:\vhosts\*******\httpdocs\envoi.php on line 41
Une erreur est survenue lors de l'envoi du formulaire par email
Warning: mail() [function.mail]: SMTP server response: 501 Your domain does not seem to be valid. Could not find MX record for your domain. in D:\******\httpdocs\envoi.php on line 98



D'autres suggestions ? encore merci pour votre aide !

 

Djokx

Avatar de Djokx
921 messages
Carte Mère
Carte Mère

Lien direct Le 17 Juin 2009 à 19h27

Salut,
Tu peux essayer le code que j'utilise si tu veux:

Code


<?php
/*
************************************************************************************* *******
CONFIGURATION
************************************************************************************* *******
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'adresse@aidoexemple.com';

// copie ? (envoie une copie au visiteur)
$copie = 'non';

// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
************************************************************************************* *******
FIN DE LA CONFIGURATION
************************************************************************************* *******
*/

/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};

$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;

if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace('&#039;',"'",$message);
$message = str_replace('&#8217;',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('','',$message);

// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="contact.php">Retour au formulaire</a></p>'."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))

if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
echo ' <fieldset><legend>Vos coordonnées</legend>'."\n";
echo ' <p>'."\n";
echo ' <label for="nom">Nom ou Pseudo :</label>'."\n";
echo ' <input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="email">Email :</label>'."\n";
echo ' <input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";

echo ' <fieldset><legend>Votre message :</legend>'."\n";
echo ' <p>'."\n";
echo ' <label for="objet">Objet :</label>'."\n";
echo ' <input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="message">Message :</label>'."\n";
echo ' <textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";

echo ' <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le mail !" /></div>'."\n";
echo '</form>'."\n";
};
?>

 

Pouzy

Avatar de Pouzy
14137 messages
No-Life
No-Life
Administrateur
Administrateur

Lien direct Le 17 Juin 2009 à 19h30

Devenez fan d'Aidoweb sur Facebook \o/ - N'oubliez pas de cliquer sur [Résolu] une fois votre problème réglé
 

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 21h15

Merci

 

sevsev

Avatar de sevsev
10 messages
Barrette de RAM
Barrette de RAM

Lien direct Le 17 Juin 2009 à 21h17

Citation de Gymmli

Salut,
Tu peux essayer le code que j'utilise si tu veux:

Code


<?php
/*
************************************************************************************* *******
CONFIGURATION
************************************************************************************* *******
*/
// destinataire est votre adresse mail. Pour envoyer à plusieurs à la fois, séparez-les par une virgule
$destinataire = 'adresse@aidoexemple.com';

// copie ? (envoie une copie au visiteur)
$copie = 'non';

// Action du formulaire (si votre page a des paramètres dans l'URL)
// si cette page est index.php?page=contact alors mettez index.php?page=contact
// sinon, laissez vide
$form_action = '';

// Messages de confirmation du mail
$message_envoye = "Votre message nous est bien parvenu !";
$message_non_envoye = "L'envoi du mail a échoué, veuillez réessayer SVP.";

// Message d'erreur du formulaire
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";

/*
************************************************************************************* *******
FIN DE LA CONFIGURATION
************************************************************************************* *******
*/

/*
* cette fonction sert à nettoyer et enregistrer un texte
*/
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};

/*
* Cette fonction sert à vérifier la syntaxe d'un email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};

$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin

// si formulaire envoyé, on récupère tous les champs. Sinon, on initialise les variables.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$objet = (isset($_POST['objet'])) ? Rec($_POST['objet']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

if (isset($_POST['envoi']))
{
// On va vérifier les variables et l'email ...
$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erroné, soit il vaut l'email entré
$err_formulaire = (IsEmail($email)) ? false : true;

if (($nom != '') && ($email != '') && ($objet != '') && ($message != ''))
{
// les 4 variables sont remplies, on génère puis envoie le mail
$headers = 'From: '.$nom.' <'.$email.'>' . "\r\n";

// envoyer une copie au visiteur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};

// Remplacement de certains caractères spéciaux
$message = html_entity_decode($message);
$message = str_replace('&#039;',"'",$message);
$message = str_replace('&#8217;',"'",$message);
$message = str_replace('<br>','',$message);
$message = str_replace('','',$message);

// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="contact.php">Retour au formulaire</a></p>'."\n";
$err_formulaire = true;
};
}; // fin du if (!isset($_POST['envoi']))

if (($err_formulaire) || (!isset($_POST['envoi'])))
{
// afficher le formulaire
echo '<form id="contact" method="post" action="'.$form_action.'">'."\n";
echo ' <fieldset><legend>Vos coordonnées</legend>'."\n";
echo ' <p>'."\n";
echo ' <label for="nom">Nom ou Pseudo :</label>'."\n";
echo ' <input type="text" id="nom" name="nom" value="'.stripslashes($nom).'" tabindex="1" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="email">Email :</label>'."\n";
echo ' <input type="text" id="email" name="email" value="'.stripslashes($email).'" tabindex="2" />'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";

echo ' <fieldset><legend>Votre message :</legend>'."\n";
echo ' <p>'."\n";
echo ' <label for="objet">Objet :</label>'."\n";
echo ' <input type="text" id="objet" name="objet" value="'.stripslashes($objet).'" tabindex="3" />'."\n";
echo ' </p>'."\n";
echo ' <p>'."\n";
echo ' <label for="message">Message :</label>'."\n";
echo ' <textarea id="message" name="message" tabindex="4" cols="30" rows="8">'.stripslashes($message).'</textarea>'."\n";
echo ' </p>'."\n";
echo ' </fieldset>'."\n";

echo ' <div style="text-align:center;"><input type="submit" name="envoi" value="Envoyer le mail !" /></div>'."\n";
echo '</form>'."\n";
};
?>



Merci pour ton code, mais je mets quoi dans mon fichier html, dans la balise <form> ?

 

<<<12>>>

[Page 1 sur 2 - 19 messages]

Forum informatique > Aide création et gestion de site > Besoin de votre aide : Formulaire PHP et envoi par email !!