Envoyer un fichier par mail s'il est joint

Signaler
Messages postés
11
Date d'inscription
samedi 13 mars 2010
Statut
Membre
Dernière intervention
4 novembre 2012
-
Bonjour,

j'ai laborieusement créé un formulaire avec une pièce jointe. La pièce jointe grace à un input type file (nommé fichier1) est uploader sur le serveur puis envoyé par mail. Cela fonctionne uniquement si un fichier est joint.
Je voudrais d'une part que le mail soit envoyé même s'il n'y a pas de pièce jointe et d'autre part pouvoir envoyer plusieurs pièces jointes si elles sont jointes au formulaire (ajouter d'autres input file).
Voici mon code actuel, merci pour vos réponses.


ironman

//=====Lecture et mise en forme de la pièce jointe.
$file = $_FILES["fichier1"]["tmp_name"];
$file_name = $_FILES["fichier1"]["name"];
$fichier   = fopen($file, "rb");
$attachement = fread($fichier, filesize($file));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
if ($_FILES['fichier1']['error'] > 0) $erreur = "Erreur lors du transfert";	
$resultat = move_uploaded_file($_FILES['fichier1']['tmp_name'],"../email/email.jpg");
if ($resultat) echo "Transfert réussi";
echo $_FILES['fichier1']['tmp_name'];
echo $_FILES['fichier1']['name'];


//variables du mail			
$to="daniel.jacquin@gmail.com";
$objet="une annonce est déposée";

//========== 			
$header="From: $nom <$email>\n";
$header .="Reply-to: $email \r\n";
$header .="MIME-Version: 1.0 \r\n";
$header .="Content-Type: multipart/mixed; boundary="$boundary"\r\n";
$header .="\r\n";

//=====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;
//==========
 
//=====On ferme 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="$file"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename="$file_name"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 


//verif syntaxe mail			
if(!preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)){$valid=false;$erreursyntaxeemail="mauvaise synthaxeemail";echo $erreursyntaxeemail;}
// le tel ne peut contenir de lettre
if(preg_match("#[[:alpha:]]+$#", $telephone)){$valid=false;$erreursyntaxetel = "Le champ numéro de téléphone ne peut contenir de lettres";echo $erreursyntaxetel;}

//vérification des champs obligatoires et affichage des erreurs
if(empty($nom)){$valid=false;$erreurnom="pas de nom";echo $erreurnom;}
if(empty($prenom)){$valid=false;$erreurprenom="pas de prenom";echo $erreurprenom;}
if(empty($adresse)){$valid=false;$erreuradresse="pas de adresse";echo $erreuradresse;}
if(empty($codepostal)){$valid=false;$erreurcodepostal="pas de code postal";echo $erreurcodepostal;}
if(empty($ville)){$valid=false;$erreurville="pas de ville";echo $erreurville;}
if(empty($telephone)){$valid=false;$erreurtelephone="pas de telephone";echo $erreurtelephone;}
if(empty($email)){$valid=false;$erreuremail="pas de email";echo $erreuremail;}
if(empty($adresseloc)){$valid=false;$erreuradresseloc="pas de adresseloc";echo $erreuradresseloc;}
if(empty($surface)){$valid=false;$erreursurface="pas de surface";echo $erreursurface;}
if(empty($capacite)){$valid=false;$erreurcapacite="pas de capacite";echo $erreurcapacite;}
if(empty($chambre)){$valid=false;$erreurchambre="pas de chambre";echo $erreurchambre;}
if(empty($litdouble)){$valid=false;$erreurlitdouble="pas de ";echo $erreurlitdouble;}
if(empty($litsimple)){$valid=false;$erreurlitsimple="pas de litsimple";echo $erreurlitsimple;}
if(empty($parking)){$valid=false;$erreurparking="pas de ";echo $erreurparking;}
if(empty($formequipement)){$valid=false;$erreurformequipement="pas de formequipement";echo $erreurformequipement;}
if(empty($ext)){$valid=false;$erreurext="pas de extérieur";echo $erreurext;}
if(empty($caution)){$valid=false;$erreurcaution="pas de caution";echo $erreurcaution;}
if(empty($accompte)){$valid=false;$erreuraccompte="pas de accompte";echo $erreuraccompte;}


//si tous les champs sont bien postés et remplis
elseif(
isset($_POST) && 
isset($_POST['nom']) && !empty($nom)&& 
isset($_POST['prenom']) && !empty($prenom) && 
isset($_POST['adresse']) && !empty($adresse) && 
isset($_POST['codepostal']) && !empty($codepostal) &&
isset($_POST['ville']) && !empty($ville) &&
isset($_POST['telephone']) && !empty($telephone) &&
isset($_POST['email']) && !empty($email) &&
isset($_POST['adresseloc']) && !empty($adresseloc) &&
isset($_POST['surface']) && !empty($surface) &&
isset($_POST['capacite']) && !empty($capacite) &&
isset($_POST['chambre']) && !empty($chambre) &&
isset($_POST['litdouble']) && !empty($litdouble) &&
isset($_POST['litsimple']) && !empty($litsimple) &&
isset($_POST['parking']) && !empty($parking) &&
isset($_POST['parking']) && !empty($parking) &&
isset($_POST['formequipement']) && !empty($formequipement) &&
isset($_POST['ext']) && !empty($ext) &&
isset($_POST['caution']) && !empty($caution) &&
isset($_POST['accompte']) && !empty($accompte) &&
!preg_match("#[[:alpha:]]+$#", $telephone) &&	preg_match("/^[a-z0-9\-_.]+@[a-z0-9\-_.]+\.[a-z]{2,3}$/i",$email)
)


{$valid=true;


if ($valid)
if(mail($to,$objet,$message,$header))
{echo "tous est ok"; $erreurenvoi="message bien arrivé";


}
else{$erreurenvoi="une erreur est survenue, rééessayer";}
}