[PHP] envoi de mail

Résolu/Fermé
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 - 14 oct. 2009 à 19:54
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 - 28 oct. 2009 à 19:56
Bonjour,

Pour me contacter, le client doit remplir un formulaire puis valider.
Comment faire en sorte que je reçoive automatiquement un message dans ma boîte de réception dont le texte serait un mélange de texte html et de variable 'post' (ex: <?php $_POST['nom'] ?> a demandé à $_POST['objet']) ?
Je souhaiterait également faire en sorte que le sujet du message soit la valeur du champ 'objet' du formulaire. Pour cela, j'ai fait ce script ci-dessous, mais sans succès ! :(

<?php
if( isset($_POST['objet']) )
{ ?><form method="post" action="mailto:***@hotmail.fr" enctype="text/plain"><?php }
else
{ ?><form method="post" action="page du formulaire" ><?php }
?>

<input type="radio" name="objet" value="inscription" id="inscription"/> <label for="inscription" style="color: grey">t'inscrire et bénéficier des nombreux avantages !</label><br/>
<input type="radio" name="objet" value="oubli_mdp" id="oubli_mdp"/> <label for="oubli_mdp" style="color: grey">changer ton mot de passe... ou que tu l'as oublié ?</label><br/>
[...]
<input type="text" name="nom" value="ton nom" >
<input type="text" name="add-mail" value="ton add mail" >
[...]
<input type="submit" value="Ok">

</form>

<?php
if(isset($_POST['objet']))
{
// 1. Définition de la destination :
$mail = '***@hotmail.fr';

// 2. Réglage d'interprétation des serveurs :
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail))
{$passage_ligne = "\r\n";}
else
{$passage_ligne = "\n";}

// 3. Déclaration du contenu des mails (cf question ci-dessus) :
$message_txt = $_POST['nom'] . 'a demandé à' . $_POST['objet'];
$message_html = $_POST['nom'] . 'a demandé à' . $_POST['objet'];

// 4. Création de la boundary :
$boundary = "-----=".md5(rand());

// 5. Définition de l'objet :
$sujet = $_POST['objet'] cf question ci-dessus;

// 6. Création du header :
$header = "From: \"boxsite\"<***@free.fr>".$passage_ligne;
$header.= "Reply-to: \"boxsite\"<***@free.fr>".$passage_ligne; Comment mettre ici l'add insérée dans le champ 'add-mail' ?
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;

// 7. Création du message
$message = $passage_ligne.$boundary.$passage_ligne;

// 8. Ajout du message au format texte
$message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_txt.$passage_ligne;
$message.= $passage_ligne."--".$boundary.$passage_ligne;

// 9. Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;

$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;

// 10. Envoi de l'e-mail !
mail($mail,$sujet,$message,$header);
}
?>


Merci de votre aide !
A voir également:

19 réponses

digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
22 oct. 2009 à 18:04
Au fait, quel script me conseillez-vous entre celui copié-collé dans mon 1er post et celui-ci ?

<?php
define( 'mail_to', 'utilisateur@domaine.tld' ); // valeur par défaut
define( 'mail_from', 'utilisateur@domaine.tld' ); // valeur par défaut
define( 'mail_object', 'objet du message' ); // valeur par défaut
define( 'mail_message', 'votre message' ); // valeur par défaut

$mailSent = false; // drapeau qui aiguille l'affichage du formulaire OU du récapitulatif
$errors = array(); // tableau des erreurs de saisie

if ( filter_has_var( INPUT_POST, 'send' ) ) // le formulaire a été soumis avec le bouton [Envoyer]
{
$from = filter_input( INPUT_POST, 'from', FILTER_VALIDATE_EMAIL );
if( $from === NULL || $from === MAIL_FROM ) // si le courriel fourni est vide OU égale à la valeur par défaut
{
$errors[] = 'Vous devez renseigner votre adresse de courrier électronique.';
}
elseif( $from === false ) // si le courriel fourni n'est pas valide
{
$errors[] = 'L\'adresse de courrier électronique n\'est pas valide.';
$from = filter_input( INPUT_POST, 'from', FILTER_SANITIZE_EMAIL );
}

$object = filter_input( INPUT_POST, 'object', FILTER_SANITIZE_STRING, FILTER_FLAG_ENCODE_HIGH | FILTER_FLAG_ENCODE_LOW );
if( $object === NULL OR $object === false OR empty( $object ) OR $object === MAIL_OBJECT ) // si l'objet fourni est vide, invalide ou égale à la valeur par défaut
{
$errors[] = 'Vous devez renseigner l\'objet.';
}

$message = filter_input( INPUT_POST, 'message', FILTER_UNSAFE_RAW );
if( $message === NULL OR $message === false OR empty( $message ) OR $message === MAIL_MESSAGE ) // si le message fourni est vide, (invalide) ou égale à la valeur par défaut
{
$errors[] = 'Vous devez écrire un message.';
}

if( count( $errors ) === 0 ) // si il n'y a pas d'erreurs
{
if( mail( MAIL_TO, $object, $message, "From: $from\nReply-to: $from\n" ) ) // tentative d'envoi du message
{
$mailSent = true;
}
else // échec de l'envoi
{
$errors[] = 'Votre message n\'a pas été envoyé.';
}
}
}
else // le formulaire est affiché pour la première fois, avec les valeurs par défaut
{
$from = MAIL_FROM;
$object = MAIL_OBJECT;
$message = MAIL_MESSAGE;
}
?>



<!DOCTYPE ...

<?php
if( $mailSent === true ) // si le message a bien été envoyé, on affiche le récapitulatif
{ ?>
<p id="success">Votre message a bien été envoyé.</p>
<p><strong>Courriel pour la réponse :</strong><br /><?php echo( $from ); ?></p>
<p><strong>Objet :</strong><br /><?php echo( $object ); ?></p>
<p><strong>Message :</strong><br /><?php echo( nl2br( htmlspecialchars( $message ) ) ); ?></p>
<?php }
else // le formulaire est affiché pour la première fois ou le formulaire a été soumis mais contenait des erreurs
{
if( count( $errors ) !== 0 )
{
echo( "\t\t<ul>\n" );
foreach( $errors as $error )
{
echo( "\t\t\t<li>$error</li>\n" );
}
echo( "\t\t</ul>\n" );
}
else
{
echo( "\t\t<p id=\"welcome\"><em>Tous les champs sont obligatoires</em></p>\n" );
}
?>
<form id='contact' method="post" action="<?php echo( $_SERVER['REQUEST_URI'] ); ?>">
<p>
<label for="from">Courriel pour la réponse</label>
<input type="text" name="from" id="from" value="<?php echo( $from ); ?>" />
</p>
<p>
<label for="object">Objet</label>
<input type="text" name="object" id="object" value="<?php echo( $object ); ?>" />
</p>
<p>
<label for="message">Message</label>
<textarea name="message" id="message" rows="20" cols="80"><?php echo( $message ); ?></textarea>
</p>
<p>
<input type="reset" name="reset" value="Effacer" />
<input type="submit" name="send" value="Envoyer" />
</p>
</form>
<?php
}
?>
</body>
</html>
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
22 oct. 2009 à 18:08
P.S :
Je suis hébergé par Free.
Free empêche apparemment les envois de mail par la fonction mail() pour empêcher les spams...
S'il empêche aussi email(), les captchas peuvent-ils permettre l'envoi de mail ??
0
Bonjour

Non, free ne bloque pas la fonction mail, je l'utilise souvent. On est juste limité à 2000 messages par semaine.
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
23 oct. 2009 à 12:03
Ok, c'est bon à savoir.

Mais si tu utilises souvent la fonction mail, as-tu un script qui t'envoie un mail avec comme contenu les valeurs de variables issues d'un formulaire ?

Si oui, pourrait-tu me le copier-coller ou alors me conseiller un des deux scripts ci-dessus ?

Avec mon 1er script, j'ai une alerte qui dit que le message n'a pu être envoyé car il est considéré comme un spam... :(
0
ci-après un code qui tourne chez free et qui permet d'envoyer des mails en HTML
Je ne t'explique pas les détails, je précise que la fonction logger me sert à enregistrer les anomalies dans une table. Tu peux la remplacer par un echo ou la faire sauter
J'ai repompé la fonction QPEncode quelque part il y a longtemps, je ne sais plus où
Le tout travaille en UTF8, mais ça ne devrait pas être difficile à adapter si tu as besoin

// encodage quoted-printable

function QPencode($str) {
    
  $lines = preg_split("/\r?\n/", $str);
  $out     = '';
  
  foreach ($lines as $line) {
    $newpara = '';
    
    for ($j = 0; $j <= strlen($line) - 1; $j++) {
      $char = substr ( $line, $j, 1 );
      $ascii = ord ( $char ); 
      
      if ( $ascii < 32 || $ascii == 61 || $ascii > 126 ) {
        $char = '=' . strtoupper ( dechex( $ascii ) );
      }
      
      if ( ( strlen ( $newpara ) + strlen ( $char ) ) >= 76 ) {
        $out .= $newpara . '=' . CRLF;   $newpara = '';
      }
      $newpara .= $char;
    }
    $out .= $newpara . CRLF;
  }
  return trim ( $out );   
}

//-----------------------------------------------------------------------
// envoi mail en HTML
// $contenu ne doit contenir que ce qui est entre <body> </body>exclus
// le sujet est mis en titre de page

function EnvoyerMail ($to, $sujet,$contenu) {
  global $configdb;
    
    $subject = mb_encode_mimeheader($sujet,'utf-8','Q');
    $headers = "From: $configdb[maillistmaster]\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html; charset=\"UTF-8\"\r\n";
    $headers .= "Content-Transfer-Encoding: quoted-printable";

    $msg="<html>\r\n";
    $msg.="<head>\r\n";
    $msg.="<title>$sujet</title>\r\n";
    $msg.="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
    $msg.="</head>\r\n";
    $msg.="<body>\r\n";
    $msg.=$contenu;
    $msg.="</html>\r\n";
    $msg.="</body>\r\n";

   if (mail($to, $subject, QPEncode($msg), $headers)===false) {
     logger ("erreur d'envoi mail à $to par EnvoyerMail"); 
     return false;
   }
   return true; // ok
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
23 oct. 2009 à 19:08
Je comprends pas tout dans ton script... ^^

Je préfère utiliser un des 2 que j'ai copié-collé.

-> Tu me conseillerai lequel ? A ton avis, faut-il que j'assemble les 2 ?
0
ziiro Messages postés 278 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 12 mars 2011 1
23 oct. 2009 à 22:11
Je comprend ton problème le ";" ne se trouve pas dans Euh..........
J'ai oublié tous d'un coup
##########################
# PHP Coder #
#########################
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
25 oct. 2009 à 13:38
Bon, voici mon script actuel abrégé (basé sur le 2ème) :



<?php
session_start();
if ( isset($_POST['objet']) ) {$_SESSION['objet'] = $_POST['objet'];}
?>

<?php
// Définition des valeurs par défaut :
define( 'mail_to', 'utilisateur@domaine.tld' );
define( 'mail_from', '***@free.fr' );
define( 'mail_objet', 'objet du message' );
define( 'mail_message', 'ton message' );

// Tableau d'erreurs et Etat initial de l'envoi du mail :
$mailSent = false;
$errors = array();

// Vérification des données pour l'envoi :
if
(
isset($_POST['nom'])
AND
isset($_POST['mail'])
AND
(
isset($_POST['objet'])
AND
(
( $_POST['objet'] == 'inscription' )
OR ( $_POST['objet'] == 'password_change' AND isset($_POST['mdp_change']) )
OR ( $_POST['objet'] == 'password_oubli' )
OR ( $_POST['objet'] == 'realisation' AND isset($_POST['creation']) )
OR ( $_POST['objet'] == 'biz_achat' AND isset($_POST['produit']) )
OR ( $_POST['objet'] == 'biz_vente' AND isset($_POST['article']) AND isset($_POST['prix']) AND isset($_POST['etat']) AND isset($_POST['image']) AND isset($_POST['description']) )
OR ( $_POST['objet'] == 'autre' AND isset($_POST['expression']) )
OR ( $_POST['objet'] == 'bug' AND isset($_POST['navigateur']) AND isset($_POST['signal']) AND isset($_POST['ecran']) )
)
)
)
{
// ----- Envoi du formulaire -----
if ( filter_has_var( INPUT_POST, 'send' ) ) // si soumission du formulaire Là est l'erreur (voir question à la fin)
{

// Définition du message du mail
if ($_POST['objet'] == 'inscription'){$message = ''.$_POST['nom'].' souhaiterait s\'inscrire sur mon site !';}
elseif ($_POST['objet'] == 'password_change'){$message = ''.$_POST['nom'].' souhaiterait changer son mot de passe par '.$_POST['mdp_change'].' !';}
elseif ($_POST['objet'] == 'password_oubli'){$message = ''.$_POST['nom'].' souhaiterait que je lui rappelle son mot de passe !';}
elseif ($_POST['objet'] == 'realisation'){$message = ''.$_POST['nom'].' souhaiterait obtenir une de mes réalisation !<br/>Nom : '.$_POST['creation'].'';}
elseif ($_POST['objet'] == 'biz_achat'){$message = ''.$_POST['nom'].' souhaiterait acheter un article de ma plateforme !<br/>Nom : '.$_POST['produit'].'';}
elseif ($_POST['objet'] == 'biz_vente'){$message = ''.$_POST['nom'].' souhaiterait vendre un article sur ma plateforme !<br/>Détails :<br/>article : '.$_POST['article'].'<br/>prix : '.$_POST['prix'].'<br/>état : '.$_POST['etat'].'<br/>image : '.$_POST['image'].'<br/>annonce : '.$_POST['description'].'';}
elseif ($_POST['objet'] == 'autre'){$message = ''.$_POST['nom'].' souhaiterait que je lise son message !<br/>Son message :<br/>" '.$_POST['expression'].' "';}
elseif ($_POST['objet'] == 'bug'){$message = ''.$_POST['nom'].' souhaiterait me signaler un bug !<br/>Détails :<br/>navigateur : '.$_POST['navigateur'].'<br/>erreur observée : '.$_POST['signal'].'<br/>ecran utilisé : '.$_POST['ecran'].'';}

// Définition de l'add mail de réponse
$mail = filter_input( INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL );
if( $mail === NULL || $mail === mail_from )
{
$errors[] = 'Tu as oublié de donner ton adresse mail !';
}
elseif( $mail === false )
{
$errors[] = 'L\'adresse mail donnée n\'est pas valide !';
$mail = filter_input( INPUT_POST, 'mail', FILTER_SANITIZE_EMAIL );
}

// Définition de l'objet du mail
$objet = $_SESSION['objet'];
if( $objet === NULL OR $objet === false OR empty( $objet ) OR $objet === mail_objet )
{
$errors[] = 'Tu as oublié de définir l\'objet de ton mail !';
}

// Envoi du mail si aucune erreur n'est détectée
if( count( $errors ) === 0 )
{
if( mail( mail_to, $objet, $message, "From: ***@free.fr \n Reply-to: $mail \n" ) ) // tentative d'envoi du message
{
$mailSent = true;
}
else // échec de l'envoi
{
$errors[] = 'Erreur : Ta demande n\'a pu être envoyée ! Recommence';
}
}

}
// -------------------------------
}
else // le formulaire est affiché pour la première fois, avec les valeurs par défaut
{
$mail = mail_to;
$objet = mail_objet;
$message = mail_message;
}
?>
<!DOCTYPE ...
[...]
<body>

<h1>Me Contacter</h1>

<?php
if( $mailSent === true )
{
?>
<div>
<p>
J'ai bien reçu ta demande !<br />
Je t'enverrai un mail pour confirmer dans la semaine à cette adresse : <?php echo( $mail ); ?><br />
<br />
<input type="button" submit="window.location='w.formulaire_contact.php';" value="Envoyer une autre demande !" >
</div>
<?php
}

else
{
if( count( $errors ) !== 0 )
{
echo( "\t\t<ul>\n" );
foreach( $errors as $error ) { echo( "\t\t\t<li>$error</li>\n" ); }
echo( "\t\t</ul>\n" );
}
?>

<form method="post" action="w.formulaire_contact.php" >

<span class="etape">1. Sélectionne le sujet du message...</span><br/>
<select name="objet">
<option value="inscription" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'inscription') ){ ?> selected="selected" <?php } ?> >t'inscrire et bénéficier des nombreux avantages !</option>
<option value="password_change" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_change') ){ ?> selected="selected" <?php } ?> >changer ton mot de passe</option>
<option value="password_oubli" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_oubli') ){ ?> selected="selected" <?php } ?> >se rappeler de son mot de passe ?</option>
...
</select><input type="submit" value="Ok"><br/>
<br/>

<form method="post" action="w.formulaire_contact.php" >
<span class="etape">2. Remplis les champs suivants :</span><br/>
<label for="nom">prénom et nom :</label> <input type="text" name="nom"/><br />
<label for="mail">adresse mail :</label> <input type="text" name="mail" style="margin-left: 4.5%"/><br />

<?php
if ( isset($_POST['objet']) )
{

if ($_POST['objet'] == 'password_change')
{ ?>
<label for="mdp_change">mot de passe désiré :</label> <input type="text" name="mdp_change" /><br/>
<?php }

if ...

;}
?>

<br/>
<span class="etape">3. Recopie maintenant le code de vérification ci-dessous :</span><br />
<img src="w.captcha.php" alt="captcha" style="margin-left: 2%; border: 1px solid grey" /> <input type="text" name="verif" size="10" maxlength="6" /><br/>
<br/>
<input name="send" type="submit" value="Envoyer !" style="margin-left: 5%"> <label for="Envoyer !" style="color: blue"> Clique pour valider et envoyer ton message !</label><br/>
</form>
<?php
}
?>

<?php
session_unset();
session_destroy();
?>

</body>
</html>

Pourquoi on me retourne "Fatal error: Call to undefined function: filter_has_var() in ... on line - voir script - " lorsque je clique sur "Envoyer" pour les 'objets' ayant des champs supplémentaires ou sur "Ok" pour les autres (à savoir "s'inscrire" et "se rappeler son mot de passe") ?!
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
25 oct. 2009 à 14:08
bizzare ton script deux balises <form et une seule </form

filter_has_var( INPUT_POST, 'send' )

une petite verif de cette fonction sur Google t'aurait permis de voir que cette fonction n'est dispo que pourPHP 5 >= 5.2.0
es tu sur que tes scripts chez free tournent sur cette version

ensuite 'send' doit correspondre à un champ de ton formulaire jr n'en ai pas trouvé vaec name='send'

ensuite je ne vois pas l'interet d'utiliser les sessions si on les detruit à chaque fois ?
cette partie de script s'éxécutant à chaque fois
<?php
session_unset();
session_destroy();
?>
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
26 oct. 2009 à 14:05
Effectivement, j'avais oublié de fermer mon 1er formulaire... x)

J'ai donc rajouter la balise </form> et depuis je ne n'ai plus l'alerte affichée ! :)

Mais mon message ne s'envoie pas et la fraction du script ci-dessous ne sert à rien, le mot n'est pas affiché :


<?php
if( $mailSent === true )
{
?>
<div>
<p>
J'ai bien reçu ta demande !<br />
Je t'enverrai un mail pour confirmer dans la semaine à cette adresse : <?php echo( $mail ); ?><br />
<br />
<input type="button" submit="window.location='w.formulaire_contact.php';" value="Envoyer une autre demande !" >
</div>
<?php
}

else
{
if( count( $errors ) !== 0 )
{
echo( "\t\t<ul>\n" );
foreach( $errors as $error ) { echo( "\t\t\t<li>$error</li>\n" ); }
echo( "\t\t</ul>\n" );
}
?>
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 oct. 2009 à 15:13
if( mail( mail_to, $objet, $message, "From: ***@free.fr \n Reply-to: $mail \n" ) ) //

le Reply-to doit contenir aussi ton adresse A TOI pas celle de l'utilisateur
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
26 oct. 2009 à 15:33
ben oui, c'est bien ce que j'ai fait :) .

Quant à la fonction " filter_has_var( INPUT_POST, 'send' ) ",
elle est en effet compatible qu'avec les dernières versions, mais il est possible de transformer un fichier php de n'importe quelle version en modifiant l'extension par .php5

Il y a bien un <input> de type "submit" et de nom "send" dans mon 2ème formulaire.

J'ai aussi retiré cette fraction de mon script :
<?php
session_unset();
session_destroy();
?>

Le problème est cependant toujours le même (rien ne se passe une fois avoir appuyer sur le bouton "envoyer !" ) :(
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 oct. 2009 à 16:46
Ben oui, c'est bien ce que j'ai fait :) .

tu mets Reply-to: $mail \n"

et $mail vaut:
$mail = filter_input( INPUT_POST, 'mail', FILTER_SANITIZE_EMAIL );
et un peu plus bas dans le else tu as
$mail=mail_to;

je ne sais pas ou tu as pris ce script mais il est mal gaulé

les variables ne sont pas explicites

pour moi il faudrait $mail_utilisateur
parce qu'a la fin tu ne sais plus de quel mail il s'agit
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
26 oct. 2009 à 20:19
Désolé, j'ai pas bien compris ce que tu m'as dit :s

"et $mail vaut:
$mail = filter_input( INPUT_POST, 'mail', FILTER_SANITIZE_EMAIL );
et un peu plus bas dans le else tu as
$mail=mail_to;
"
-> Dans mon script,
$mail vaut par défaut mail_to, mais si le client a entré son add mail, alors $mail vaut ce que le client a entré, nan ? (voir structure avec les if et les else)

"je ne sais pas ou tu as pris ce script mais il est mal gaulé "
-> peut-être, oui. Bien que je ne comprend pas l'erreur de syntaxe que tu me signales, j'ai repéré une erreur à
"// Définition de l'add mail de réponse
$mail = filter_input( INPUT_POST, 'mail', FILTER_VALIDATE_EMAIL );
if( $mail === NULL || $mail === mail_from )
{
$errors[] = 'Tu as oublié de donner ton adresse mail !';
}"
Ne faut-il pas mettre plutôt mail_to ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
26 oct. 2009 à 22:17
-> Dans mon script,
$mail vaut par défaut mail_to, mais si le client a entré son add mail, alors $mail vaut ce que le client a entré, nan ? (voir structure avec les if et les else)


oui j'avais vu, justement ça n'est pas très clair pour l'utilisation ensuite de $mail

le mieux c'est de mettre

if( mail( mail_to, $objet, $message, "From: ***@free.fr \n Reply-to: ***@free.fr \n" ) ) 
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
27 oct. 2009 à 10:21
Si j'applique ton script, il faut que je détermine manuellement l'add mail de destination ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 oct. 2009 à 12:24
l'adresse mail de destination sera toujours la tienne !

tu veux que l'utilisateur t'envoi A TOI les donnees qu'il a saisi dans le formulaire et ce via le script php

et l'adresse de l'expediteur aussi est la tienne pour que ton hebergeur autorise l'envoi
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
27 oct. 2009 à 13:42
pardon, je voulais dire de réponse (Reply-to: ... /n) ?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
27 oct. 2009 à 16:18
Reply To c'est l'adresse de réponse pour un accusé de réception

donc il faut que ce soit la même que l'expéditeur donc encore la tienne
0
digival Messages postés 193 Date d'inscription mercredi 14 octobre 2009 Statut Membre Dernière intervention 7 novembre 2010 1
28 oct. 2009 à 19:56
OK ok, bon ben merci beaucoup je vais me débrouiller avec tout ça :)
0