email script with image

the mail() function

Moderators: macek, egami, gesf

citecarter
New php-forum User
New php-forum User
Posts: 3
Joined: Mon Oct 24, 2011 9:05 am

email script with image

Postby citecarter » Mon Oct 24, 2011 9:51 am

hi,
sorry for my english, i'm french.
I'm newbie in php and i got probleme with an email script with image (Attachement).
People who use my form have error message
mail can't be send!

What s the probleme with my script?
Script with translation:

Code: Select all

<!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>site</title>
         <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

         <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("data base");
 if (!empty($_POST['name']) && !empty($_POST['email']) && !empty($_POST['date']) &&
        !empty($_POST['hour']) && !empty($_POST['title']) && !empty($_POST['contents']) && !empty($_POST['place']))
 {
      include "libmail.php";
      $name=$_POST['name'];
      $email=$_POST['email'];
      $date=$_POST['date'];
      $hour=$_POST['hour'];
      $title=$_POST['title'];
      $contents=$_POST['contents'];
      $place=$_POST['place'];
      if (isset($_POST['link']))
              $link=$_POST['link'];
      else $link = '';
      $m= new Mail;
      $m->From( $_POST['email'] );
      $m->To( "mymail@mail.fr" );
      $m->Subject( "announcement ".$_POST['title'] ); 
      $message= " Name : ".stripslashes($name)."\n Email : ".$email."\n Date : ".$date."\n Hour : ".$hour."\n Titre :".stripslashes($titre)."\n Place : ".stripslashes($place)."\n Link : ".$link."\n Message : ".stripslashes($contents)."\n";
      $m->Body( $message);
       $m->Priority(2) ;
     if (isset($_FILES['image'])){
           if ($_FILES['image']['error'] == 0 && file_exists($_FILES['image']['tmp_name'])) {
              $m->Attach( $_FILES['image']['tmp_name'], $_FILES['image']['name'] ) ;
          }
          else {
              switch ($_FILES['image']['error']) {
                 case UPLOAD_ERR_OK :
                    $erreur = 'No error;
                     break;
                 case UPLOAD_ERR_INI_SIZE :
                    $erreur = 'Your file `'.$_FILES['image']['name'].'` is oversize allowed by PHP( '.get_cfg_var('upload_max_filesize').' )';
                     break;
                 case UPLOAD_ERR_FORM_SIZE :
                    $erreur = 'Your file is oversize';
                     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>';
          }
      }
       if ($m->Send()){
          echo '<p class="success">Your message is send.</p>';
      }
      else {
          echo '<p class="erreur">mail can't be send!</p>';
      }
     
}
 if ((isset($_POST['submit']))&&($_POST['submit'] == "Announcement"))
 {
 ?>
  <div id="corpsform">
  <form vname="FormName" action="" method="post" enctype="multipart/form-data" name="form">
  <table align=center height=400>
  <tr><td align=right>Name :</td><td align=left><input type="text" size="30" name="name" 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>Hour : </td><td align=left><input type="text" size="30" name="hour" value=""/></td></tr>
  <tr><td align=right>Title : </td><td align=left><input type="text" size="30" name="title" 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>Contents :</td><td align=left><textarea rows="5" name="contents" cols="30"></textarea></td></tr>
  <tr><td align=right>Place : </td><td align=left><input type="text" size="30" name="place" value=""/></td></tr>
  <tr><td align=right>Link : <td align=left><input type="text" size="30" name="link" value=""/></td></tr>
   
 <tr><td colspan=2 align=center><input type="submit" name="submit" value="Send" /></td></tr>
  </table>
  </form>
 
 </div>
 <?php
 }
 mysql_close();
     ?>
     </body>
  </html>


original script:

Code: Select all

<!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( "monmail@mail.fr" );
      $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['image']['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
             
          }
          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
 }
 mysql_close();
     ?>
     </body>
  </html>

User avatar
egami
php-forum GURU
php-forum GURU
Posts: 2196
Joined: Wed Oct 06, 2010 11:19 am
Location: Happy Valley, UT

Re: email script with image

Postby egami » Mon Oct 24, 2011 9:56 am

to send images, you must format the email to encode the image. There are several examples of encoding on php.net/mail

I urge you to steer away from other people's code and use your own until you understand the functions implied. This way, when something does break, you have a solid understanding of how and why it's messing up.

citecarter
New php-forum User
New php-forum User
Posts: 3
Joined: Mon Oct 24, 2011 9:05 am

Re: email script with image

Postby citecarter » Tue Oct 25, 2011 6:37 am

Ok thank you, but can you explain me why my code don't work.

citecarter
New php-forum User
New php-forum User
Posts: 3
Joined: Mon Oct 24, 2011 9:05 am

Re: email script with image

Postby citecarter » Thu Oct 27, 2011 5:18 am

What's wrong with this one:

Code: Select all

<?php
   
if (isset($_POST['name']) AND isset($_POST['email'])AND isset($_POST['date'])AND isset($_POST['hour'])AND isset($_POST['title'])AND isset($_POST['contents'])AND isset($_POST['place']))
{
   include "libmail.php";
   
   $nom=$_POST['name'];
   $email=$_POST['email'];
   $date=$_POST['date'];
   $heure=$_POST['hour'];
   $titre=$_POST['title'];
   $contenu=$_POST['contents'];
   $lieu=$_POST['place'];
   if (isset($_POST['link']))
      $lien=$_POST['link'];
   
   $m= new Mail;
   $m->From( $_POST['email'] );
   $m->To( "mymail@mail.fr" );
   $m->Subject( "announcement ".$_POST['title'] );   
   $imager = $_FILES['image']['tmp_name'];
   $nameimage = $_FILES['image']['name'];
   $message= " Name : ".stripslashes($name)."\n Email : ".$email."\n Date : ".$date."\n Hour : ".$hour."\n Title :".stripslashes($title)."\n Place : ".stripslashes($place)."\n Link : ".$link."\n Message : ".stripslashes($contents)."\n";
   $m->Body( $message);
   $m->Priority(2) ;
   if (isset($imager))
      $m->Attach( "$imager", "$nameimage" ) ;
   $m->Send();
?>


Return to “PHP coding => Mail”

Who is online

Users browsing this forum: No registered users and 1 guest