IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Erreur lors de l'envoie de mails


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2006
    Messages : 38
    Points : 31
    Points
    31
    Par défaut Erreur lors de l'envoie de mails
    Bonjour à tous !

    Je sollicite votre aide afin de m'aider à corriger quelques soucis sur mon code.

    • Lorsque je met en pièce jointe plus de $nbr_max_file ou que la $taille des fichiers est lourde, le mail part tout de même mais avec une seule pièce jointe nommée ATT00001.txt.
    • Lorsque je prends moins de fichier que $nbr_max_file ou que la $taille des fichiers est dans la norme, je reçois le mail avec toutes les pièces jointes mais avec en surplus le fichier ATT00001.txt.


    Pouvez-vous m'aider svp ?

    functions.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function sendEmail($EmailDesti,$Fr_AdresseMail,$sujet,$message="",$attach = NULL){
     
    $header = "From: $Fr_AdresseMail";
     
    // boundary 
    $semi_rand = md5(time()); 
    $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
     
    // header for attachment 
    $header.= "\nMIME-Version: 1.0\n"."Content-Type: multipart/mixed;\n"." boundary=\"{$mime_boundary}\""; 
     
    // multipart boundary 
    $message = "This is a multi-part message in MIME format.\n\n"."--{$mime_boundary}\n"."Content-Type: text/html; charset=\"UTF-8\"\n"."Content-Transfer-Encoding: 8bit\n\n".$message."\n\n"; 
    $message.= "--{$mime_boundary}\n";
     
     
      //Ajout des pieces jointes si il y en a
      if(!empty($attach)){
        foreach($attach as $pj){
          $file = fopen($pj,"rb");
          $data = fread($file,filesize($pj));
          fclose($file);
          $data = chunk_split(base64_encode($data));
          $fileName = basename($pj);
          $message.= "Content-Type: {\"application/octet-stream\"};\n"." name=\"$pj\"\n"."Content-Disposition: attachment;\n"." filename=\"$fileName\"\n"."Content-Transfer-Encoding: base64\n\n".$data."\n\n";
          $message.= "--{$mime_boundary}\n";    
        }
      }
     
    // send
    if(mail($EmailDesti, $sujet, $message, $header)) {return true;} else {return false;} 
     
    }
    inscription.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    if(isset($_POST['Envoyer'])){$erreur="";
     
    // Nettoyage des entrées
    while(list($var,$val)=each($_POST)){if(!is_array($val)){$$var=strip_tags($val);}
    else{while(list($arvar,$arval)=each($val)){$$var[$arvar]=strip_tags($arval);}}}
     
    // Création du message
    if($erreur==""){
     
    if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $EmailDesti)){echo "\r\n";} else {echo "\n";}
     
    $extensions  	= array('.jpg', '.jpeg','.png','.bmp','.pdf','.txt');
    $taille_maxi  	= 1024;//10485760;
    $nbr_max_file 	= 10;
    $erreur 		= "";
    $dirToUpload 	= "upload/";
    $filesToAttach 	= array();
     
    $header 		= "From: ".$Fr_AdresseMail;
     
    $EmailDesti		= MAIL_PERSONNEL;
    $sujet			= utf8_decode($data['Titre']);
     
    $message		= "<html><head><meta charset='utf-8'><style>body{font-family:Calibri,'Futura';}</style></head><body>".$TablO.$Libelle_01." : ".ucwords(strtolower($Fr_Nom_Prenoms))."<br>".$Libelle_02." : ".strtolower($Fr_AdresseMail).$TablF."</body></html>";
     
    //=====Ajout de la pièce jointe.
    $Fr_Photos= !empty($_FILES['Fr_Photos']) ? $_FILES['Fr_Photos'] : NULL;
     
    if($Fr_Photos)
    {
     
      if (count($Fr_Photos['name']) > $nbr_max_file) {$erreur.=  "<li>• Trop de fichiers uploadés</li>";}else
      {
        foreach ($Fr_Photos['name'] as $indice=>$upload_file )
    	{
          $tmp_name 	= $Fr_Photos['tmp_name'][$indice];  
          $upload_type 	= $Fr_Photos['type'][$indice];
          $extension  	= strrchr($upload_file, '.');
          $taille  		= filesize($tmp_name);
     
          if(!in_array($extension, $extensions))
    	  {
    		  $erreur.="<li>• Vous devez uploader un fichier de type jpg, jpeg, png, bmp ou pdf...</li>";
    	  }
    	  else
    	  {
            if($taille > $taille_maxi)
    		{
    			$erreur.="<li>• La taille maximale des fichiers ne doit pas dépasser 10Mo</li>";
    		}
    		else
    		{
               if (move_uploaded_file($tmp_name, $dirToUpload.$upload_file))
    		   {
    			   $filesToAttach[] = $dirToUpload.$upload_file;
    		   }
    		   else
    		   {
    			   $erreur.="<li>• Erreur lors de l'upload </li>";
    		   }
            }
          }
        }
    	//	
      }
    }
     
    if(sendEmail($EmailDesti,$Fr_AdresseMail,$sujet,$message,$filesToAttach)){$ok_mail="true";}else{$erreur.="<li>".$ERREUR_ERROR_1."</li>";}}
    }

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour envoyer des e-mails, je vous recommande la bibliothèque PHPMailer (licence LGPL) qui permet d'envoyer des pièces jointes sans problème
    https://github.com/PHPMailer/PHPMailer

Discussions similaires

  1. [Débutant] erreur lors d'un envoie de mail
    Par remyyyyy dans le forum VB.NET
    Réponses: 7
    Dernier message: 08/08/2014, 21h32
  2. DEBIAN 6 : erreur lors d'un envoie de mail
    Par LudoSIGMA dans le forum Administration système
    Réponses: 0
    Dernier message: 06/02/2013, 19h27
  3. Réponses: 3
    Dernier message: 22/10/2007, 10h30
  4. [VB.NET 2005] Erreur lors d'un envois de mail
    Par mimil77210 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 08/06/2006, 14h00
  5. [Mail] Erreur lors de l'envoi de mail
    Par PAYASS59 dans le forum Langage
    Réponses: 1
    Dernier message: 11/05/2006, 14h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo