[PHP] Envoi de mail

digival Messages postés 209 Statut Membre -  
digival Messages postés 209 Statut Membre -
Bonjour,

Je joint ci-dessous mon script pour que les clients puissent m'envoyer un mail à partir d'un formulaire.

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

<?php
$mail_destination = 'mine@hotmail.fr';

if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail_destination))
{ $passage_ligne = "\n"; }
else
{ $passage_ligne = "\n"; }

if ($_POST['objet'] == 'inscription'){$message_txt = ''.$_POST['nom'].' souhaiterait s\'inscrire sur mon site !';}
elseif ($_POST['objet'] == 'password_change'){$message_txt = ''.$_SESSION['nom'].' souhaiterait changer son mot de passe par '.$_POST['mdp_change'].' !<br/>Nom du posteur : '.$_POST['nom'].'';}
elseif ($_POST['objet'] == 'password_oubli'){$message_txt = ''.$_POST['nom'].' souhaiterait que je lui rappelle son mot de passe !';}

if ($_POST['objet'] == 'inscription'){$message_html = ''.$_POST['nom'].' souhaiterait s\'inscrire sur mon site !';}
elseif ($_POST['objet'] == 'password_change'){$message_html = ''.$_SESSION['i_nom'].' souhaiterait changer son mot de passe par '.$_POST['mdp_change'].'!<br/>Nom du posteur : '.$_POST['nom'].'';}
elseif ($_POST['objet'] == 'password_oubli'){$message_html = ''.$_POST['nom'].' souhaiterait que je lui rappelle son mot de passe !';}

if ( isset($_POST['image']) )
{
$fichier = fopen("image.jpg", "r");
$attachement = fread($fichier, filesize("image.jpg"));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
}

$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());

$sujet = $_POST['objet'];

$header = "From: \"Mon Site\"<mine@hotmail.fr>".$passage_ligne;
$header.= "Reply-to: \"Mon Site\" <mine@hotmail.fr>".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;

// CRÉATION DU MESSAGE
$message = $passage_ligne."--".$boundary.$passage_ligne;
$message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
$message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
// 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_alt.$passage_ligne;

// 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;
//==========

// Fermeture de la boundary alternative
$message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
//==========

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

//AJOUT DE LA PIÈCE JOINTE
$message.= "Content-Type: image/jpeg; name=\"image.jpg\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========

if( $_POST['send'] )
{
// ENVOI DE L'E-MAIL
mail($mail_destination,$sujet,$message,$header);
}
?>

<html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Me Contacter !</title>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
<meta http-equiv="content-language" content="fr" />
<style type="text/css"> [...] </style>
</head>
<body>

<div id="corps">
<h1>Me Contacter</h1>
<!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!-->
<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_oubli" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_oubli') ){ ?> selected="selected" <?php } ?> >se rappeler de son mot de passe ?</option>
<option value="password_change" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_change') ){ ?> selected="selected" <?php } ?> >changer ton mot de passe</option>
</select><input type="submit" value="Ok"><br/>
</form>
<br/>

<form method="post" action="w.formulaire_contact.php" enctype="multipart/form-data" >
<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 ( $_SESSION['i_nom'] == true )
{
if ($_POST['objet'] == 'password_change')
{ ?>
<label for="mdp_change">mot de passe désiré :</label> <input type="text" name="mdp_change"/><br/>
<?php }

elseif ( $_POST['objet'] == 'inscription' )
{ ?>
<p style="color: red; text-align: center">Tu es déjà identifié avec un mot de passe en tant que membre !</p>
<?php }

elseif ( $_POST['objet'] == 'password_change' )
{ ?>
<p style="color: red; text-align: center">Ton mot de passe ne doit pas comporter de caractères spéciaux (!#$%&'*+-/=?^_`{|}~@.[]).</p>
<?php }
}
elseif
(
$_SESSION['i_nom'] == false
AND
(
$_POST['objet'] == 'password_change'
)
)
{ ?>
<p style="color: red; text-align: center" >Tu dois t'identifier en tant que membre pour pouvoir faire cela !</p>
<?php }

;}
?>

<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="send" style="color: blue"> Clique pour valider et envoyer ton message !</label><br/>
</form>
<!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!-->
</div>

</body>
</html>

-> Pourquoi, lorsqu'on clique sur "Envoyer", je reçois bien un message mais sans objet ni contenu ?!
Configuration: Windows Vista
Firefox 3.5.4

8 réponses

  1. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Ton code est illisible parce que tu ne l'as pas mis entre <code> et </.code> (sans le ".").
    0
  2. digival Messages postés 209 Statut Membre 1
     
    Désolé, je savais pas qu'on pouvait faire ça...

    Le revoici :
    <?php
    session_start();
    if ( isset($_POST['objet']) ) {$_SESSION['objet'] = $_POST['objet'];}
    ?>
    
    <?php
    $mail_destination = 'mine@hotmail.fr';
    
    if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail_destination))
    { $passage_ligne = "\n"; }
    else
    { $passage_ligne = "\n"; }
    
    if ($_POST['objet'] == 'inscription'){$message_txt = ''.$_POST['nom'].' souhaiterait s\'inscrire sur mon site !';}
    elseif ($_POST['objet'] == 'password_change'){$message_txt = ''.$_SESSION['nom'].' souhaiterait changer son mot de passe par '.$_POST['mdp_change'].' !<br/>Nom du posteur : '.$_POST['nom'].'';}
    elseif ($_POST['objet'] == 'password_oubli'){$message_txt = ''.$_POST['nom'].' souhaiterait que je lui rappelle son mot de passe !';}
    
    if ($_POST['objet'] == 'inscription'){$message_html = ''.$_POST['nom'].' souhaiterait s\'inscrire sur mon site !';}
    elseif ($_POST['objet'] == 'password_change'){$message_html = ''.$_SESSION['i_nom'].' souhaiterait changer son mot de passe par '.$_POST['mdp_change'].'!<br/>Nom du posteur : '.$_POST['nom'].'';}
    elseif ($_POST['objet'] == 'password_oubli'){$message_html = ''.$_POST['nom'].' souhaiterait que je lui rappelle son mot de passe !';}
    
    if ( isset($_POST['image']) )
    {
    $fichier = fopen("image.jpg", "r");
    $attachement = fread($fichier, filesize("image.jpg"));
    $attachement = chunk_split(base64_encode($attachement));
    fclose($fichier);
    }
    
    $boundary = "-----=".md5(rand());
    $boundary_alt = "-----=".md5(rand());
    
    $sujet = $_POST['objet'];
    
    $header = "From: \"Mon Site\"<mine@hotmail.fr>".$passage_ligne;
    $header.= "Reply-to: \"Mon Site\" <mine@hotmail.fr>".$passage_ligne;
    $header.= "MIME-Version: 1.0".$passage_ligne;
    $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
    
    // CRÉATION DU MESSAGE
    $message = $passage_ligne."--".$boundary.$passage_ligne;
    $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
    $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
    // 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_alt.$passage_ligne;
    
    // 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;
    //==========
    
    // Fermeture de la boundary alternative
    $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
    //==========
    
    $message.= $passage_ligne."--".$boundary.$passage_ligne;
    
    //AJOUT DE LA PIÈCE JOINTE
    $message.= "Content-Type: image/jpeg; name=\"image.jpg\"".$passage_ligne;
    $message.= "Content-Transfer-Encoding: base64".$passage_ligne;
    $message.= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne;
    $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
    //==========
    
    if( $_POST['send'] )
    {
    // ENVOI DE L'E-MAIL
    mail($mail_destination,$sujet,$message,$header);
    }
    ?>
    
    <html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <title>Me Contacter !</title>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <meta http-equiv="content-language" content="fr" />
    <style type="text/css"> [...] </style>
    </head>
    <body>
    
    <div id="corps">
    <h1>Me Contacter</h1>
    <!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!-->
    <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_oubli" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_oubli') ){ ?> selected="selected" <?php } ?> >se rappeler de son mot de passe ?</option>
    <option value="password_change" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_change') ){ ?> selected="selected" <?php } ?> >changer ton mot de passe</option>
    </select><input type="submit" value="Ok"><br/>
    </form>
    <br/>
    
    <form method="post" action="w.formulaire_contact.php" enctype="multipart/form-data" >
    <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 ( $_SESSION['i_nom'] == true )
    {
    if ($_POST['objet'] == 'password_change')
    { ?>
    <label for="mdp_change">mot de passe désiré :</label> <input type="text" name="mdp_change"/><br/>
    <?php }
    
    elseif ( $_POST['objet'] == 'inscription' )
    { ?>
    <p style="color: red; text-align: center">Tu es déjà identifié avec un mot de passe en tant que membre !</p>
    <?php }
    
    elseif ( $_POST['objet'] == 'password_change' )
    { ?>
    <p style="color: red; text-align: center">Ton mot de passe ne doit pas comporter de caractères spéciaux (!#$%&'*+-/=?^_`{|}~@.[]).</p>
    <?php }
    }
    elseif
    (
    $_SESSION['i_nom'] == false
    AND
    (
    $_POST['objet'] == 'password_change'
    )
    )
    { ?>
    <p style="color: red; text-align: center" >Tu dois t'identifier en tant que membre pour pouvoir faire cela !</p>
    <?php }
    
    ;}
    ?>
    
    <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="send" style="color: blue"> Clique pour valider et envoyer ton message !</label><br/>
    </form>
    <!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!-->
    </div>
    
    </body>
    </html> 
    
    0
  3. avion-f16 Messages postés 19182 Date d'inscription   Statut Contributeur Dernière intervention   4 511
     
    Non, ne refait pas un copier/coller de ce que tu as déjà mis sur CCM : les espaces n'y sont plus, ça rends ton code illisible.
    Repostes ton code en faisant un copier/coller depuis ton fichier .php
    0
  4. digival Messages postés 209 Statut Membre 1
     
    Ok ok, le re-revoici (=_=') ^^ :

    <?php
    session_start();
    if ( isset($_POST['objet']) ) {$_SESSION['objet'] = $_POST['objet'];}
    ?>
    
    <?php
    $mail_destination = 'mine@hotmail.fr'; 
    
     if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail_destination))
     { $passage_ligne = "\n"; }
     else
     { $passage_ligne = "\n"; }
     
     if ($_POST['objet'] == 'inscription'){$message_txt = ''.$_POST['nom'].' souhaiterait s\'inscrire sur mon site !';}
     elseif ($_POST['objet'] == 'password_change'){$message_txt = ''.$_SESSION['nom'].' souhaiterait changer son mot de passe par '.$_POST['mdp_change'].' !<br/>Nom du posteur : '.$_POST['nom'].'';}
     elseif ($_POST['objet'] == 'password_oubli'){$message_txt = ''.$_POST['nom'].' souhaiterait que je lui rappelle son mot de passe !';}
    
     if ($_POST['objet'] == 'inscription'){$message_html = ''.$_POST['nom'].' souhaiterait s\'inscrire sur mon site !';}
     elseif ($_POST['objet'] == 'password_change'){$message_html = ''.$_SESSION['i_nom'].'  souhaiterait changer son mot de passe par '.$_POST['mdp_change'].'!<br/>Nom du posteur : '.$_POST['nom'].'';}
     elseif ($_POST['objet'] == 'password_oubli'){$message_html = ''.$_POST['nom'].' souhaiterait que je lui rappelle son mot de passe !';}
    
    if ( isset($_POST['image']) )
    {
    $fichier   = fopen("image.jpg", "r");
    $attachement = fread($fichier, filesize("image.jpg"));
    $attachement = chunk_split(base64_encode($attachement));
    fclose($fichier);
    }
    
    $boundary = "-----=".md5(rand());
    $boundary_alt = "-----=".md5(rand());
    
    $sujet = $_POST['objet'];
    
    $header = "From: \"Mon Site\"<valen7in@hotmail.fr>".$passage_ligne;
    $header.= "Reply-to: \"Mon Site\" <valen7in@hotmail.fr>".$passage_ligne;
    $header.= "MIME-Version: 1.0".$passage_ligne;
    $header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
    
    // CRÉATION DU MESSAGE
    $message = $passage_ligne."--".$boundary.$passage_ligne;
    $message.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary_alt\"".$passage_ligne;
    $message.= $passage_ligne."--".$boundary_alt.$passage_ligne;
    // 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_alt.$passage_ligne;
     
    // 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;
    //==========
     
    // Fermeture de la boundary alternative
    $message.= $passage_ligne."--".$boundary_alt."--".$passage_ligne;
    //==========
     
    $message.= $passage_ligne."--".$boundary.$passage_ligne;
    
    //AJOUT DE LA PIÈCE JOINTE
    $message.= "Content-Type: image/jpeg; name=\"image.jpg\"".$passage_ligne;
    $message.= "Content-Transfer-Encoding: base64".$passage_ligne;
    $message.= "Content-Disposition: attachment; filename=\"image.jpg\"".$passage_ligne;
    $message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
    $message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
    //========== 
    
    if( $_POST['send'] )
    {
    // ENVOI DE L'E-MAIL
    mail($mail_destination,$sujet,$message,$header);
    } 
    ?>
    <html lang="fr" xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <title>Me Contacter !</title>
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
    <meta http-equiv="content-language" content="fr" />
    <style type="text/css"> [...] </style>
    </head>
    <body>
    
    <div id="corps">
    <!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!-->
    <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_oubli" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_oubli') ){ ?> selected="selected" <?php } ?> >se rappeler de son mot de passe ?</option>
    <option value="password_change" <?php if ( isset($_POST['objet']) AND ($_POST['objet'] == 'password_change') ){ ?> selected="selected" <?php } ?> >changer ton mot de passe</option>
    </select><input type="submit" value="Ok"><br/>
    </form>
    <br/>
    
    <form method="post" action="w.formulaire_contact.php" enctype="multipart/form-data" >
    <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 ( $_SESSION['i_nom'] == true )
     {
      if ($_POST['objet'] == 'password_change')
      { ?> 
       <label for="mdp_change">mot de passe désiré :</label> <input type="text" name="mdp_change" /><br/>
      <?php }
     
     elseif 
     ( 
     $_SESSION['i_nom'] == false 
     AND 
      (
         $_POST['objet'] == 'password_change' 
      ) 
     )
     { ?>
       <p style="color: red; text-align: center" >Tu dois t'identifier en tant que membre pour pouvoir faire cela !</p>
      <?php }
    
    ;}
    ?>
    
    <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="send" style="color: blue"> Clique pour valider et envoyer ton message !</label><br/>
    </form>
    <!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!--><!-->
    </div>
    
    </body>
    </html>
    


    Je répète ma question :
    -> Pourquoi, lorsqu'on clique sur "Envoyer", je reçois bien un message mais sans objet ni contenu ?!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. digival Messages postés 209 Statut Membre 1
     
    - back'up ! -
    0
  7. digival Messages postés 209 Statut Membre 1
     
    - back'up ! -
    0
  8. digival Messages postés 209 Statut Membre 1
     
    et comme jamais 2 sans 3 ...
    0
  9. digival Messages postés 209 Statut Membre 1
     
    ... back'up !
    0