Fichier Joint dans email

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 : Fichier Joint dans email

Re: Fichier Joint dans email

par antidote75 » 30 janv. 2012, 17:33

OK

Sinon j'ai rajouté du code pour avoir un fichier joint mais je n'ai pas de pièce jointe

Il y a plusieurs références au nom du fichier mais je ne sais pas si il faut mettre le chemin du fichier à chaque fois ou une seule fois

Et en plus sur l'email il me reprend du code

Ceci est un message au format MIME 1.0 multipart/mixed.

-------=68de7cfa65a767325415d3504950e9ef
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Test 7
-------=68de7cfa65a767325415d3504950e9ef
Content-Type: image/jpeg; name="Couturier_Bueno-6083.jpg"Content-Transfer-Encoding: base64Content-Disposition: attachment; filename="Couturier_Bueno-6083.jpg.jpg"


Mon nouveau code :
<?php

require ("../Connexion/config.php");

$expediteur   = "[email protected]"; 


if(isset($_POST['envoi']))  
	{
	//Afin d'éviter les slashes quand il y a des '	
	$sujet = stripslashes($_POST["sujet"]); 	
		
	$corps = stripslashes($_POST["corps"]); 
	
	//var_dump($_FILES); 
		
	
	if (empty($_POST["selection"])) 
		{
		echo "<h3 align=center><strong>Vous devez remplir au moins un case</h3>";	
		
	    echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>'; 
		}	
		else
		{
			
		$fichier = $_FILES['fichier_joint']['name'];
		//echo "$fichier";

						
		if (empty($_FILES["fichier_joint"]['name'])) 
		
			{
				echo "Fichier Non joint";
				
				$msg .= $corps;
  $msg .= "\r\n";	
  $entete = "From: ".$expediteur ."\r\n"; 
  
    
  $selection=$_POST["selection"];	
  
  		
		foreach ($selection as $choix)
			{
			
			//mail($choix, $sujet, $msg, "Reply-to: ".adminEmail."\r\nFrom: ".adminEmail."\r\n".$header); 
			//mail($choix, $sujet, $msg, $entete);
			}
			
		echo "<h3 align=center><strong>Votre Newsletter a bien été envoyée</h3>";	
		echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>'; 	

				
			}
				
			else
			
			{	
				
			
echo "Fichier joint";				
					
//=====Lecture et mise en forme de la pièce jointe.
$fichier   = fopen("http://www.photographe-mode.net/Newsletter/Couturier_Bueno-6083.jpg", "r");
$attachement = fread($fichier, filesize("Couturier_Bueno-6083.jpg"));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
				
				
	//----------------------------------
	//----------------------------------------------- 
    //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML 
    //----------------------------------------------- 

$boundary = '-----=' . md5(uniqid(mt_rand())); 
     
  
//----------------------------------------------- 
//HEADERS DU MAIL 
//----------------------------------------------- 

  $headers  = "From: \"Hervé Dunoyer\"<[email protected]>\n";
  $headers .= "MIME-Version: 1.0\n";
  $headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
  
//----------------------------------------------- 
//MESSAGE TEXTE 
//----------------------------------------------- 

  $message  = "Ceci est un message au format MIME 1.0 multipart/mixed.\n\n";
  $message .= "--" . $boundary . "\n";
  $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n"; 
  $message .= "Content-Transfer-Encoding: 8bit\n\n";
  $message .= $corps;
  $message .= "\n";
  $message .= "--" . $boundary . "\n";
   
 	  
  //=====Ajout de la pièce jointe.
$message.= "Content-Type: image/jpeg; name=\"Couturier_Bueno-6083.jpg\"";
$message.= "Content-Transfer-Encoding: base64";
$message.= "Content-Disposition: attachment; filename=\"Couturier_Bueno-6083.jpg.jpg\"";


 			
//  $msg .= $corps;
//  $msg .= "\r\n";	
 
$entete = "From: ".$expediteur ."\r\n"; 
  
    
$selection=$_POST["selection"];	
  
  		
foreach ($selection as $choix)
	{
	//mail($choix, $sujet, $message, "Reply-to: ".adminEmail."\r\nFrom: ".adminEmail."\r\n".$header); 
	//mail($choix, $sujet, $msg, "Reply-to: ".adminEmail."\r\nFrom: ".adminEmail."\r\n".$header); 
	mail($choix, $sujet, $message, $entete);
	}
			
	echo "<h3 align=center><strong>Votre Newsletter a bien été envoyée</h3>";	
	echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>'; 	
	}	
		
			
// Fin if (empty($_POST["selection"])) 					
	}
//Fin if(isset($_POST['envoi']))  	
	}	

?>
Merci pour votre aide

Re: Fichier Joint dans email

par xTG » 30 janv. 2012, 17:16

En fait cet array est créé seulement s'il y a un fichier uploadé.
Donc soit tu prends l'artillerie lourde (bon pas tellement mais bon autant à comprendre ce qu'on fait) et tu vérifies que le champ n'est pas vide => empty()
Soit tu vérifies que le champ existe (il ne peut être vide de toute façon...) => isSet()

Re: Fichier Joint dans email

par antidote75 » 30 janv. 2012, 16:56

Mais Moogli dit de ne pas le faire (cf messages précédents !!!)

Re: Fichier Joint dans email

par xTG » 30 janv. 2012, 15:16

Non ce n'est pas bon.
Il faut utiliser isSet() et non empty().

Re: Fichier Joint dans email

par antidote75 » 30 janv. 2012, 15:13

J'ai mis cette condition et cela a l'air de marcher

if (empty($_FILES["fichier_joint"]['name']))

peux tu me dire si c'est correct

Merci

Re: Fichier Joint dans email

par moogli » 30 janv. 2012, 14:13

si le champs existe dans le formulaire c'est normal, vérifie plutot s'il y a quelque chose dans name (tmp_name).

pour voir plus clairement la chose ajout un var_dump($_FILES); au début du script pour voir comment cela se comporte dans ce cas ;)


@+

Re: Fichier Joint dans email

par antidote75 » 30 janv. 2012, 14:02

Merci beaucoup

Le problème n'est pas d'envoyer un fichier dans le mail (j'y arrive) mais de spécifier une condition si il y a un fichier joint ou pas :


if(isset($_FILES['fichier_joint'])) dans mon code car il me met à chaque fois "Fichier Joint" même si il n'en a pas

Hervé

Re: Fichier Joint dans email

par moogli » 30 janv. 2012, 13:50

Salut,

Il y a un exemple d'envoie de fichier par mail dans les commentaires de la doc de la fonction. http://fr2.php.net/manual/fr/function.mail.php


@+

Fichier Joint dans email

par antidote75 » 30 janv. 2012, 12:46

Bonjour,

Je voudrai envoyer à plusieurs destinataires un message par mail

Jusque là cela marche mais je voudrai suivant qu'il y ait un fichier joint ou pas des instructions différentes or que j'en mette ou pas cela ne change rien

Merci de votre aide

Mon code
<?php

require ("../Connexion/config.php");

$expediteur   = "[email protected]"; 


if(isset($_POST['envoi']))  
	{
	//Afin d'éviter les slashes quand il y a des '	
	$sujet = stripslashes($_POST["sujet"]); 	
	//$sujet=$_POST["sujet"];	
	
	$corps = stripslashes($_POST["corps"]); 
	
	
	//$corps=$_POST["corps"];	
	
	if (empty($_POST["selection"])) 
		{
		echo "<h3 align=center><strong>Vous devez remplir au moins un case</h3>";	
		
	    echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>'; 
		}	
		else
		{
			
	
	if(isset($_FILES['fichier_joint']))		
			
		
		{			
		echo "Fichier Joint";
	}
	
	else
	
	{		

  $msg .= $corps;
  $msg .= "\r\n";	
  $entete = "From: ".$expediteur ."\r\n"; 
  
  echo "Fichier Non Joint";
  
  $selection=$_POST["selection"];	
  
  		
		foreach ($selection as $choix)
			{
			
			//mail($choix, $sujet, $msg, "Reply-to: ".adminEmail."\r\nFrom: ".adminEmail."\r\n".$header); 
			//mail($choix, $sujet, $msg, $entete);
			}
			
		echo "<h3 align=center><strong>Votre Newsletter a bien été envoyée</h3>";	
		echo '<p align="center"><a href="javascript:history.back(-1)">Retourner sur la Page Message</a></p>'; 	

		
//Fin if(isset($_POST['fichier joint']))  				
}		
			
// Fin if (empty($_POST["selection"])) 					
	}
//Fin if(isset($_POST['envoi']))  

}

?>