probleme de reception d'email via un formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : probleme de reception d'email via un formulaire

Re: probleme de reception d'email via un formulaire

par moogli » 27 oct. 2011, 09:32

je t'invite a relire les messages précendent et à comprendre le cheminement du code avant d'aller plus loin.

t'est perdu (ce que je peu comprendre) et faut repartir sur des bases simple et saine sinon ça avance pas.

le but c'est que tu comprenne, si tu ne le souhaite y a une rubrique embauche / projet communautaire etc etc :mrgreen:

le cheminement est simple (tu l'a en grande partis)
- affichage du formulaire
- validation du formulaire => existence des "variables" issues du formulaire et test de conformité de celle ci (qu'un email comporte qu'une seul @ etc etc)
- vérification de la présence ou non dans la base du nom d'utilisateur et de l'email (pour assurer l'unicité).
- insertion dans la table du compte utilisateur
- récupération de l'id qui vient d'être inséré
- construction et envoi de l'email

Le script de vérification :

- Vérification de la présence dans l'url dans 2 infos (id + clef)
- validation des infos (on vérifie si les deux sont présentent et "couplée")
- si oui validation du compte (champ validation / actif passé à true / vrai / on/ c'que tu veux).

si tu ne comprend pas a quoi sert une fonction regarde la doc et si tu a encore des questions demande, y a pas de raison que l'on ne réponde pas.

@+

Re: probleme de reception d'email via un formulaire

par cite carter » 26 oct. 2011, 23:32

J'ai testé en retirant ces 2 lignes:
move_uploaded_file($_FILES['image']['tmp_name'], './'.$_FILES['image']['name']);// met le chemin correct vers ton script à la place
               echo '<img src="'.$_FILES['image']['name'].'" />';

Je reçois bien le mail avec l'image mais j'ai ce message à l'envoie: " Le mail n'a pas pus être envoyé ! "
Et avec un fichier plus lourd que le max-size je reçois le mail sans image et j'ai ce message à l'envoie: " Votre fichier dépasse la taille maximale requise - Le mail n'a pas pus être envoyé ! "

Re: probleme de reception d'email via un formulaire

par Invité » 26 oct. 2011, 23:26

i testé en retirant ces 2 lignes:
move_uploaded_file($_FILES['image']['tmp_name'], './'.$_FILES['image']['name']);// met le chemin correct vers ton script à la place
              echo '<img src="'.$_FILES['image']['name'].'" />';
Je reçois bien le mail avec l'image mais j'ai ce message à l'envoie: " Le mail n'a pas pus être envoyé ! "
Et avec un fichier plus lourd que le max-size je reçois le mail sans image et j'ai ce message à l'envoie: " Votre fichier dépasse la taille maximale requise - Le mail n'a pas pus être envoyé ! "

Re: probleme de reception d'email via un formulaire

par cite carter » 25 oct. 2011, 17:14

$res = @mail( $this->strTo, $this->xheaders['Subject'], $this->fullBody, $this->headers );
Il n'y a pas cette ligne dans le code!!!

Re: probleme de reception d'email via un formulaire

par Mazarini » 24 oct. 2011, 16:19

Bonjour,

La méthode Send ne renvoie pas d'indication de bonne exécution.
Eventuellement après $res = @mail( $this->strTo, $this->xheaders['Subject'], $this->fullBody, $this->headers );
ajoutes return $res;

La méthode attach ne correspond pas à ton utilisation.
Attach( string filename, [string mimetype], [string disposition] )

Attach a file $filename to the mail.

filename : path to the file on drive.

mimetype : string that defines the file MIME-type.
Default MIME is 'application/x-unknown-content-type'.
The Mime-Type is used by Email clients, for instance to display an image attached in the mail,
or to "automagically" launch an attached virus for some of them :)

disposition : this code defines the method used to display the attachment.
With inline (default), the mail client will display the file directly in the mail if possible.
With attachment, the attched file will be presented as a link.
Je me suis basé sur http://lwest.free.fr/doc/php/lib/index. ... il&lang=en qui semble correspondre à ce que tu utilises.

Re: probleme de reception d'email via un formulaire

par cite carter » 24 oct. 2011, 15:36

Je l'ais viré mais ça ne fonctionne toujours pas, j'ai ce message aprés l'envoie
Le mail n'a pas pus être envoyé !
Je reçois le mail sans image.
Effectivement je ne comprends pas tout le script, comme je l'ai dis précédemment, je suis débutant en php. J'essaye d'apprendre, mais je ne vais pas assez vite.

Re: probleme de reception d'email via un formulaire

par moogli » 22 oct. 2011, 09:22

Ben tu le vire je ne l'ai mis que pour le test.

Est ce que tu comprends le script ?

C'est la 1ère chose à faire avant d'aller plus loin.

@+

Re: probleme de reception d'email via un formulaire

par cite carter » 21 oct. 2011, 21:35

le fichier doit etre reçu par mail et pas etre mis directement sur le site

Re: probleme de reception d'email via un formulaire

par moogli » 21 oct. 2011, 20:58

Que veux-tu dire par " // met le chemin correct vers ton script à la place " ?
Ben tu met le chemin où le fichier doit mis ^^

@+

Re: probleme de reception d'email via un formulaire

par cite carter » 21 oct. 2011, 20:43

J'ai testé en corrigeant les erreurs mais les images ne sont plus jointes avec les mails que je reçoit.
Je pense que ça vient de cette ligne de code:
move_uploaded_file($_FILES[image']['tmp_name'], './'.$_FILES['image']['name']);// met le chemin correct vers ton script à la place
Que veux-tu dire par " // met le chemin correct vers ton script à la place " ?

Re: probleme de reception d'email via un formulaire

par cite carter » 21 oct. 2011, 16:08

ton truc est sensé mettre ton site en page d'accueil ?
Non, il ouvre la boite de dialogue permettant d'ajouter aux favoris (petite étoile sur IE, marque-page sur firefox...).
j'ai sortie la ligne de code
<img src="favoris.gif" alt="favoris" />
    <a href="javascript:return false;" onclick="bookmarksite('Annonces', 'http://www.monsite.com/annonce.php', this);return false;" title="Annonces">Ajoutez cette page à vos Favoris</a>
de la balise php et mis juste aprés le <body> et ça fonctionne.
Merci pour la correction d'orthographe, je ne suis pas au top là dessus non plus.

Re: probleme de reception d'email via un formulaire

par moogli » 21 oct. 2011, 09:22

y a peu de chance que ce code ai pu envoyer des emai, vu que l'inclusion de la librairie est commenté (//include "libmail.php";) faut donc virer les // devant !

d'ailleurs j'ai laissé une boulette aussi
if ($_FILES['error'] == 0 && file_exists($_FILES['image']['tmp_name'])) { <= manque un ['image'] pour l'error ...
if ($_FILES['image']['error'] == 0 && file_exists($_FILES['image']['tmp_name'])) {

Après je pense que tu n'a pas vraiment compris ce que j'ai vu que tu a modifié un tas de truc sans tenir du reste; Par exemple le nom du champ de type file qui est passé de image à affiche mais tu n'a pas modifié en conséquence dans la validation du formulaire.

tu a changé la valeur du bouton submit de départ (ce que je comprend) mais pas sa valeur dans le test pour afficher le formulaire.

pour ton js je pense que le &#058; dans le liens est foireux.

juste comme ça : L'annonce sera analysée avant d'ètre publiée <= être ^^

j'ajoute aussi que <meta http-equiv="Refresh" content="600" /> ça doit être super chiant de voir la page se recharger toute seul alors que l'on a rien demandé !

après pour ta fonction JS, j'ai pas recherché, mais ton truc est sensé mettre ton site en page d'accueil ? si oui je ne comprend pas mettre en favoris c'est en page de démarrage y a des chances que les gens n'apprécie pas la blague.

revois ta copie avec ce que j'ai mis et ça devrais aller.

@+

Re: probleme de reception d'email via un formulaire

par cite carter » 21 oct. 2011, 00:59

Merci beaucoup Moogli
J'ai testé ton code, il marche trés bien.
Mais en rajoutant quelques trucs qui faisaient partis de la page d'origine, je n'arrive plus à accèder au formulaire et un lien vers les Favoris ne fonctionne plus.

Code : Tout sélectionner

<img src="favoris.gif" alt="favoris" /> <a href="javascript:return false;" onclick="bookmarksite("Annonces", "http://www.monsite.com/annonce.php", this);return false;" title="Annonces">Ajoutez cette page à vos Favoris</a>
Voici le code complet
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
     <head>
         <title>mon site</title>
         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
        <link rel="stylesheet" media="screen" type="text/css" title="news" href="style.css" />
	   <meta http-equiv="Refresh" content="600" />
	   
	   <script type="text/javascript">  
    function bookmarksite(title, url, t){  
    if (document.all) {  
    window.external.AddFavorite(url, title);  
    t.style.behavior='url(#default#homepage)';  
    t.setHomePage('http://www.monsite.com/annonce.php');  
    } else if (window.sidebar) {  
    window.sidebar.addPanel(title, url, "");  
    }  
    }  
      </script>
		 <script type="text/javascript" src="verification_formulaire.js"></script>
         <style type="text/css">
             .success {
                 border: 2px solid green;
                 text-align: center;
             }
             .error{
                 border: 2px solid red;
                 text-align: center;
             }
         </style>
     </head>
    
     <body>
	 <div id="page">
	<div id="page2">
     <div id="en_tete"></div>
     <div id="menu">
	   <div id="element_menu"></div>
	 </div>
     <div id="menu2">
	   <div id="element_menu2"></div>
	 </div>
     <div id="corps">
 <?php
 // connexion Mysql
 mysql_connect("localhost", "admin", "password");
 mysql_select_db("base de donnee");
 if (!empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['date']) && 
        !empty($_POST['heure']) && !empty($_POST['titre']) && !empty($_POST['contenu']) && !empty($_POST['lieu']))
 {
      //include "libmail.php";
      $nom=$_POST['nom'];
      $email=$_POST['email'];
      $date=$_POST['date'];
      $heure=$_POST['heure'];
      $titre=$_POST['titre'];
      $contenu=$_POST['contenu'];
      $lieu=$_POST['lieu'];
      if (isset($_POST['lien']))
              $lien=$_POST['lien'];
      else $lien = '';
      // on prépare le message
      $m= new Mail; // le mail est créé
      $m->From( $_POST['email'] );
      $m->To( "[email protected]" );
      $m->Subject( "annonce ".$_POST['titre'] );  
      $message= " Nom : ".stripslashes($nom)."\n Email : ".$email."\n Date : ".$date."\n Heure : ".$heure."\n Titre :".stripslashes($titre)."\n Lieu : ".stripslashes($lieu)."\n Lien : ".$lien."\n Message : ".stripslashes($contenu)."\n";
      $m->Body( $message);    // corps du message
      // donne la priorité du message
      $m->Priority(2) ; 
     // validation de l'upload
      if (isset($_FILES['image'])){
          // la on peu valider l'image
          if ($_FILES['error'] == 0 && file_exists($_FILES['image']['tmp_name'])) {
              // le fichier est arrivé nikel on peu le traiter
              $m->Attach( $_FILES['image']['tmp_name'], $_FILES['image']['name'] ) ;  // attache l image
              // ceci pour le test histoire de bien l'image uploadée
              move_uploaded_file($_FILES['image']['tmp_name'], './'.$_FILES['image']['name']);// met le chemin correct vers ton script à la place
              echo '<img src="'.$_FILES['image']['name'].'" />';
          }
          else {
              // la y a une erreur et faut la traiter comme il faut 
             switch ($_FILES['image']['error']) {
                 case UPLOAD_ERR_OK : 
                    $erreur = 'Pas d\'erreur';
                     break;
                 case UPLOAD_ERR_INI_SIZE : 
                    $erreur = 'Votre fichier `'.$_FILES['image']['name'].'` dépasse la taille maximale d\'upload autorisée par PHP( '.get_cfg_var('upload_max_filesize').' )';
                     break;
                 case UPLOAD_ERR_FORM_SIZE : 
                    $erreur = 'Votre fichier dépasse la taille maximale requise';
                     break;
                 case UPLOAD_ERR_PARTIAL : 
                    $erreur = 'Le fichier n\'a été que partiellement téléchargé. !!!';
                     break;
                 case UPLOAD_ERR_NO_FILE : 
                    $erreur = 'Aucun fichier téléchargé !!!';
                     break;
                 case UPLOAD_ERR_NO_TMP_DIR : 
                    $erreur = 'Un dossier temporaire est manquant.';
                     break;
                 case UPLOAD_ERR_CANT_WRITE : 
                    $erreur = 'Échec de l\'écriture du fichier sur le disque.';
                     break;
                 case UPLOAD_ERR_EXTENSION : 
                    $erreur = 'Une extension PHP a arrété l\'envoi de fichier. PHP ne propose aucun moyen de déterminer quelle extension est en cause. L\'examen du phpinfo() peut aider.';
                     break;
                 default : 
                    $erreur = 'L\'upload a rencontré une erreur inconnue !!!'; 
                    break;
             }
             echo '<p class="error">'.$erreur.'</p>';
          }
      }
      //fin validation upload
      if ($m->Send()){     // envoi le mail
          echo '<p class="success"><img src="siteimage/star.gif" alt="star" /> Votre annonce a été envoyé.</p>';
      }
      else {
          // voir si la classe fournit des messages d'erreur ! (a inclure dans le message ci dessous
          echo '<p class="erreur">Le mail n\'a pas pus être envoyé !</p>';
      }
     
}
 if ((isset($_POST['submit']))&&($_POST['submit'] == "passerannonce"))
 {
 // formulaire
 ?>
  <div id="corpsform">
     <h1><img src="formtitre.gif" alt="formulaire" /></h1><br/><br/>
     <p>Passez vos annonces<br/>
        L'annonce sera analysée avant d'ètre publiée.</p>                                
  <form vname="FormName" action="" method="post" enctype="multipart/form-data" name="form" onsubmit="return valideForm(this)">
  <table align=center height=400>
  <tr><td align=right>Nom : *</td><td align=left><input type="text" size="30" name="nom" value=""/></td></tr>
  <tr><td align=right>Email : *</td><td align=left><input type="text" size="30" name="email" value=""/></td></tr>
  <tr><td align=right>Date : *</td><td align=left><input type="text" size="30" name="date" value=""/></td></tr>
  <tr><td align=right>Heure : *</td><td align=left><input type="text" size="30" name="heure" value=""/></td></tr>
  <tr><td align=right>Titre : *</td><td align=left><input type="text" size="30" name="titre" value=""/></td></tr>
  <tr><td align=right>Image (Max:2Mo) : *</td><td align=left><input type="hidden" name="MAX_FILE_SIZE" value="2000000">
              <input name="affiche" type="file" size="30"></td></tr>
  <tr><td align=right>Contenu :*</td><td align=left><textarea rows="5" name="contenu" cols="30"></textarea></td></tr>
  <tr><td align=right>Lieu : *</td><td align=left><input type="text" size="30" name="lieu" value=""/></td></tr>
  <tr><td align=right>Lien : <td align=left><input type="text" size="30" name="lien" value=""/></td></tr>
   
 <tr><td colspan=2 align=center><input type="submit" name="submit" value="Envoyer" /></td></tr>
  </table>
  </form>
 
 </div>
 <?php
 }
 // affiche les annonces
 echo ' <center><img src="favoris.gif" alt="favoris" />
	 <a href="javascript:return false;" onclick="bookmarksite("Annonces", "http://www.monsite.com/annonce.php", this);return false;" title="Annonces">Ajoutez cette page à vos Favoris</a>
        <h3><img src="etoile.gif" alt="etoile" />Passez vos annonces
    <form method=post action="annonce.php"><input name=submit type=submit class="btn" value="cliquez ici"></form></h3>
    <h1><img src="titreannonce.gif" alt="annonce" /></h1></center>';
     mysql_query('DELETE FROM annonce WHERE date < CURRENT_DATE()');
     $retour1 = mysql_query('SELECT * FROM annonce ORDER BY date LIMIT 0, 50');
     while ($donnees = mysql_fetch_array($retour1))
         {
          echo '<div id="annonces">';
         // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
         $image = nl2br(stripslashes($donnees['image']));
         $titre = nl2br(stripslashes($donnees['titre']));
         $contenu = nl2br(stripslashes($donnees['contenu']));
         $lieu = nl2br(stripslashes($donnees['lieu']));
         $lien = nl2br(stripslashes($donnees['lien']));
         $heure = nl2br(stripslashes($donnees['heure']));
         $tableau = explode('-',$donnees['date']);
         $date_normale = $tableau[2].'-'.$tableau[1].'-'.$tableau[0];
         $timestamp_jour = mktime(0,0,0,$tableau[1],$tableau[2],$tableau[0]);
         $numero_jour = date('w',$timestamp_jour);
		 $semaine = array('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi');
         $jour = $semaine[$numero_jour];
         $numero_mois = date('n',$timestamp_jour);
         $les_mois = array('','janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre');
         $mois = $les_mois[$numero_mois];
         echo '<h4><img src="etoile.gif" alt="etoile" />'.$jour.' ' .$tableau[2].' '. $mois.' '. $tableau[0].'  '. '-'. $heure. '</h4>';
         echo '<div id="titre"><h2>'.$titre.'</h2></div>';
		 echo '<div id="image"><img src="doc/'.$donnees['image'].'" alt="image"/></div>';
		 echo $contenu;
		 echo '<div id="lieu"><img src="fleche.gif" alt="fleche" />'.$lieu.'</div>';
         echo '<a href="'.$donnees['lien'].'" onclick="window.open(this.href); return false;">'.$donnees['lien'].'</a>';
         echo '</div>';
     } // Fin de la boucle des annonces
	 
 // affiche les albums
 echo '<center><h3><img src="etoile.gif" alt="etoile" />Passez vos annonces
    <form method=post action="annonce.php"><input name=submit type=submit class="btn" value="cliquez ici"></form></h3>
    <h1><img src="titrealbum.gif" alt="partie album" /></h1></center>';
     $retour2 = mysql_query('SELECT * FROM album ORDER BY date LIMIT 0, 50');
     while ($donnees = mysql_fetch_array($retour2))
         {
          echo '<div id="album">';
         // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
         $image = nl2br(stripslashes($donnees['image']));
         $titre = nl2br(stripslashes($donnees['titre']));
         $contenu = nl2br(stripslashes($donnees['contenu']));
         $lieu = nl2br(stripslashes($donnees['lieu']));
         $lien = nl2br(stripslashes($donnees['lien']));
         $heure = nl2br(stripslashes($donnees['heure']));
         
         echo '<div id="titre_album"><h2>'.$titre.'</h2></div>';
		 echo '<div id="image_album"><img src="doc/'.$donnees['image'].'" alt="album"/></div>';
		 echo $contenu;
		 echo '<div id="lieu_album">'.$lieu.'</div>';
         echo '<a href="'.$donnees['lien'].'" onclick="window.open(this.href); return false;">'.$donnees['lien'].'</a>';
         echo '</div>';
     } // Fin de la boucle des albums
  echo '<center><div style="clear:left; background-image:url(fond.gif); background-repeat:no-repeat;background-position:center;color:white;"><strong>Inserez un lien vers les annonces sur votre site en recopiant ce code:</strong><br/> 
             <img src="http://www.monsite.com/lienannonce.gif" alt="lien annonce"/>
             <textarea name="lienannonce" id="lienannonce" rows="3" cols="50" style="font-size:11px"><a href="http://www.monsite.com/annonce.php" target="blank;"><img src="http://www.monsite.com/lienannonce.gif" alt="lien annonce"/></a></textarea>
	       </div></center>';
 mysql_close();
     ?>
	       
	 </div>
	 <div id="bas_de_page"></div>
	 </div>
	 </div>
     </body>
  </html>

Re: probleme de reception d'email via un formulaire

par moogli » 20 oct. 2011, 10:21

coté html, au vu du doctype je pense que tu a beaucoup de chose a revoir
<h3>Passez votre annonce
<form method=post action=annonce.php><input name=submit type=submit class="btn" value=""></form></h3>

ça c'est loin d'être valide xhtml :) (<center> non plus d'ailleurs, utilise les css pour cela), les attributs html doivent être délimité par des "
a quoi ça peux servir ?
<?php
$retour1 = mysql_query('SELECT * FROM baseannonce ORDER BY date LIMIT 0, 50');
while ($donnees = mysql_fetch_array($retour1))
{
         mysql_query('DELETE FROM annonce WHERE date < CURRENT_DATE()');
?>
ligne 66 à 69 à quoi ça sert un mysl_query en boucle sur un delete fixe ?
le delete est a faire AVANT le select parce que la en plus tu peux afficher des annonces qui n'existe plus (tout a fait possible si dans les 50 1ère tu a des annonces qui valide le prédicat).

d'ailleurs une annonce qui est valide qu'une seule journée c'est un peu limite on ne peux même passer une annonce le soir avant de ce coucher (genre 23h) vu qu'elle sera supprimée a partir de 00h00 (donc une heure plus tard ...).
Je pense que ce critère est a revoir ;)

ça c'est pas sérieux
echo '<h4>'.$jour.' ';echo $tableau[2].' ';echo $mois.' ';echo $tableau[0].' ';echo '-';echo $heure;
utilise la concaténation ou alors plusieurs lignes (la 1ère solution est la mieux à mon gout).
ça c'est pareil
<?php echo $titre; ?>
<?php echo '<img src="doc/'.$donnees['image'].'" alt="image"/>'; ?>
<?php echo $contenu;?>
<?php echo $lieu;?>
<?php echo '<a href="'.$donnees['lien'].'" onclick="window.open(this.href); return false;">'.$donnees['lien'].'</a>';?>
</div>
<?php
pas la peine d'ouvrir et de fermer les tags php à chaque ligne

tu peux tester ce code remanier ! (l'upload fonctionne laisse l'affichage de l'image pour t'en convaincre, modifie quand même le chemin ou va atterrir le fichier ^^)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    <head>
        <title>mon site</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            
        <script type="text/javascript">  
            function bookmarksite(title, url, t){  
                if (document.all) {  
                    window.external.AddFavorite(url, title);  
                    t.style.behavior='url(#default#homepage)';  
                    t.setHomePage('http://www.monsite.com/annonce.php');  
                    } else if (window.sidebar) {  
                    window.sidebar.addPanel(title, url, "");  
                }  
            }  
        </script>
        <style type="text/css">
            .success {
                border: 2px solid green;
                text-align: center;
            }
            .error{
                border: 2px solid red;
                text-align: center;
            }
        </style>
    </head>
   
    <body>
<?php
// connexion Mysql
mysql_connect("localhost", "admin", "password");
mysql_select_db("base de donnee");
if (!empty($_POST['nom']) && !empty($_POST['email']) && !empty($_POST['date']) && 
        !empty($_POST['heure']) && !empty($_POST['titre']) && !empty($_POST['contenu']) && !empty($_POST['lieu']))
{
     //include "libmail.php";
     $nom=$_POST['nom'];
     $email=$_POST['email'];
     $date=$_POST['date'];
     $heure=$_POST['heure'];
     $titre=$_POST['titre'];
     $contenu=$_POST['contenu'];
     $lieu=$_POST['lieu'];
     if (isset($_POST['lien']))
             $lien=$_POST['lien'];
     else $lien = '';
     // on prépare le message
     $m= new Mail; // le mail est créé
     $m->From( $_POST['email'] );
     $m->To( "[email protected]" );
     $m->Subject( "annonce ".$_POST['titre'] );  
     $message= " Nom : ".stripslashes($nom)."\n Email : ".$email."\n Date : ".$date."\n Heure : ".$heure."\n Titre :".stripslashes($titre)."\n Lieu : ".stripslashes($lieu)."\n Lien : ".$lien."\n Message : ".stripslashes($contenu)."\n";
     $m->Body( $message);    // corps du message
     // donne la priorité du message
     $m->Priority(2) ; 
     // validation de l'upload
     if (isset($_FILES['image'])){
         // la on peu valider l'image
         if ($_FILES['error'] == 0 && file_exists($_FILES['image']['tmp_name'])) {
             // le fichier est arrivé nikel on peu le traiter
             $m->Attach( $_FILES['image']['tmp_name'], $_FILES['image']['name'] ) ;  // attache l image
             // ceci pour le test histoire de bien l'image uploadée
             move_uploaded_file($_FILES['image']['tmp_name'], './'.$_FILES['image']['name']);// met le chemin correct vers ton script à la place
             echo '<img src="'.$_FILES['image']['name'].'" />';
         }
         else {
             // la y a une erreur et faut la traiter comme il faut 
             switch ($_FILES['image']['error']) {
                case UPLOAD_ERR_OK : 
                    $erreur = 'Pas d\'erreur';
                    break;
                case UPLOAD_ERR_INI_SIZE : 
                    $erreur = 'Votre fichier `'.$_FILES['image']['name'].'` dépasse la taille maximale d\'upload autorisée par PHP( '.get_cfg_var('upload_max_filesize').' )';
                    break;
                case UPLOAD_ERR_FORM_SIZE : 
                    $erreur = 'Votre fichier dépasse la taille maximale demandée par le Webmestre';
                    break;
                case UPLOAD_ERR_PARTIAL : 
                    $erreur = 'Le fichier n\'a été que partiellement téléchargé. !!!';
                    break;
                case UPLOAD_ERR_NO_FILE : 
                    $erreur = 'Aucun fichier téléchargé !!!';
                    break;
                case UPLOAD_ERR_NO_TMP_DIR : 
                    $erreur = 'Un dossier temporaire est manquant.';
                    break;
                case UPLOAD_ERR_CANT_WRITE : 
                    $erreur = 'Échec de l\'écriture du fichier sur le disque.';
                    break;
                case UPLOAD_ERR_EXTENSION : 
                    $erreur = 'Une extension PHP a arrété l\'envoi de fichier. PHP ne propose aucun moyen de déterminer quelle extension est en cause. L\'examen du phpinfo() peut aider.';
                    break;
                default : 
                    $erreur = 'L\'upload a rencontré une erreur inconnue !!!'; 
                    break;
            }
            echo '<p class="error">'.$erreur.'</p>';
         }
     }
     //fin validation upload
     if ($m->Send()){     // envoi le mail
         echo '<p class="success">Votre annonce a été envoyé.</p>';
     }
     else {
         // voir si la classe fournit des messages d'erreur ! (a inclure dans le message ci dessous
         echo '<p class="erreur">Le mail n\'a pas pus être envoyé !</p>';
     }
    
}
if ((isset($_POST['submit']))&&($_POST['submit'] == "passerannonce"))
{
// formulaire
?>
 <div id="corpsform">
                                 
 <form vname="FormName" action="" method="post" enctype="multipart/form-data" name="form">
 <table align=center height=400>
 <tr><td align=right>Nom :</td><td align=left><input type="text" size="30" name="nom" value=""/></td></tr>
 <tr><td align=right>Email : </td><td align=left><input type="text" size="30" name="email" value=""/></td></tr>
 <tr><td align=right>Date : </td><td align=left><input type="text" size="30" name="date" value=""/></td></tr>
 <tr><td align=right>Heure : </td><td align=left><input type="text" size="30" name="heure" value=""/></td></tr>
 <tr><td align=right>Titre : </td><td align=left><input type="text" size="30" name="titre" value=""/></td></tr>
 <tr><td align=right>Image (Max:2Mo) : </td><td align=left><input type="hidden" name="MAX_FILE_SIZE" value="2000000">
             <input name="image" type="file" size="30"></td></tr>
 <tr><td align=right>Contenu :</td><td align=left><textarea rows="5" name="contenu" cols="30"></textarea></td></tr>
 <tr><td align=right>Lieu : </td><td align=left><input type="text" size="30" name="lieu" value=""/></td></tr>
 <tr><td align=right>Lien : <td align=left><input type="text" size="30" name="lien" value=""/></td></tr>
  
 <tr><td colspan=2 align=center><input type="submit" name="submit" value="Envoyer" /></td></tr>
 </table>
 </form>

 </div>
<?php
}
// affiche les annonces
echo ' <h3>Passez votre annonce
 <form method=post action=""><input name=submit type=submit class="btn" value="passerannonce"></form></h3>';
    mysql_query('DELETE FROM annonce WHERE date < CURRENT_DATE()');
    $retour1 = mysql_query('SELECT * FROM baseannonce ORDER BY date LIMIT 0, 50');
    $semaine = array('Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'); // pas besoin de le déclarer 50 fois
    while ($donnees = mysql_fetch_array($retour1))
        {
         echo '<div id="annonces">';
        // On enlève les éventuels antislash PUIS on crée les entrées en HTML (<br />)
        $image = nl2br(stripslashes($donnees['image']));
        $titre = nl2br(stripslashes($donnees['titre']));
        $contenu = nl2br(stripslashes($donnees['contenu']));
        $lieu = nl2br(stripslashes($donnees['lieu']));
        $lien = nl2br(stripslashes($donnees['lien']));
        $heure = nl2br(stripslashes($donnees['heure']));
        $tableau = explode('-',$donnees['date']);
        $date_normale = $tableau[2].'-'.$tableau[1].'-'.$tableau[0];
        $timestamp_jour = mktime(0,0,0,$tableau[1],$tableau[2],$tableau[0]);
        $numero_jour = date('w',$timestamp_jour);
        $jour = $semaine[$numero_jour];
        $numero_mois = date('n',$timestamp_jour);
        $semaine = array('','janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre');
        $mois = $semaine[$numero_mois];
        echo '<h4>'.$jour.' ' .$tableau[2].' '. $mois.' '. $tableau[0].'  '. '-'. $heure. '</h4>';
        echo $titre . '<img src="doc/'.$donnees['image'].'" alt="image"/>'.$contenu . $lieu;
        echo '<a href="'.$donnees['lien'].'" onclick="window.open(this.href); return false;">'.$donnees['lien'].'</a>';
        echo '</div>';
    } // Fin de la boucle des annonces
mysql_close();
    ?>
    </body>
 </html>
Après il te restera à vérifier le fichier que tu upload histoire de pas envoyer n'importe quoi.

pourquoi ne pas utiliser directement la base donnée c'est plus simple nan ? (et moins de taff que de dépiler les mails ^^).

@+

Re: probleme de reception d'email via un formulaire

par cite carter » 19 oct. 2011, 22:55

J'ai testé avec ce code:
if ((isset($_FILES['image']['name'])&&($_FILES['image']['error']==0)))
et avec une petite valeur de taille d'image
image (max:40 Ko) <input type="hidden" name="MAX_FILE_SIZE" value="40000"><input name="image" type="file" size="30">
J'ai envoyé une annonce avec une image plus lourde que la valeur, le message a quand même aboutit mais sans l'image et pas de message d'erreur à l'envoie.
Je pensais que l'annonce n'aurait pas été envoyée et que j'aurais eu un message d'erreur me l'indiquant.