|
Informations |
Messages |
|
sevsev
10 messages
Barrette de RAM
|
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
109 messages
DVD-RW
|
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 
|
| |
|
|
|
|
sevsev
10 messages
Barrette de RAM
|
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
109 messages
DVD-RW
|
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 cloche
|
| |
|
|
|
|
Pouzy
14137 messages
No-Life
Administrateur
|
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
10 messages
Barrette de RAM
|
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
10 messages
Barrette de RAM
|
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
14137 messages
No-Life
Administrateur
|
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
109 messages
DVD-RW
|
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 
|
| |
|
|
|
|
sevsev
10 messages
Barrette de RAM
|
Le 17 Juin 2009 à 18h03
ok merci beaucoup !!! j'essaie de suivre vos conseil... :mrgreen:
|
| |
|
|
|
|
sevsev
10 messages
Barrette de RAM
|
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
921 messages
Carte Mère
|
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(''',"'",$message);
$message = str_replace('’',"'",$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
14137 messages
No-Life
Administrateur
|
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
10 messages
Barrette de RAM
|
Le 17 Juin 2009 à 21h15
|
| |
|
|
|
|
sevsev
10 messages
Barrette de RAM
|
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(''',"'",$message);
$message = str_replace('’',"'",$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> ?
|
| |
|
|
|
|