le 06/06/2007 à 09:05
Mails et deux pieces jointes php
bonjour à tous
j'ai fait un formulaire pour envoyer deux pieces jointes
le seul problème c'est que la deuxième pièce jointe ne pars pas
quelqu'un aurait une idée?
[taille=grand][couleur=rouge]LA PARTIE PROG [/couleur](code tronqué)[/taille]
Code : PHP
[taille=grand][couleur=rouge]LE FORMULAIRE (enfin juste la partie avec les pièces jointes)[/couleur](code tronqué)[/taille]
Code : PHP
j'ai fait un formulaire pour envoyer deux pieces jointes
le seul problème c'est que la deuxième pièce jointe ne pars pas
quelqu'un aurait une idée?
[taille=grand][couleur=rouge]LA PARTIE PROG [/couleur](code tronqué)[/taille]
Code : PHP
<?php
$email= $_POST['Email'];
$destinataire = "darkcyr@hotmail.fr"; # email de destination
#----------------------------------# options de pièce jointe------------------------------------#
$rep = "upload/"; # répertoire temporaire d'upload
$taillemax = 10240000; # taille max de la pièce jointe (multiple de 1024)
$erreur = false; // pas encore d'érreur
$message = false; //pas encore de message
$focus = 0; //pour la surbrillance
#----------------------------------------------------------------------------------------------------#
if (!empty($_POST)) #si le formulaire n'est pas vide
$piecejointe = "";# pièce jointe
if(!$erreur && strlen($_FILES['Fichier']['name']))
{
$fichier = $_FILES['Fichier'];
#---------------------------------upload du fichier sur le serveur------------------------------------#
$temp = $fichier['tmp_name'];
$name = $fichier['name'];
$size = $fichier['size'];
$destination = $rep.$name;
if($size > $taillemax)
$erreur = "Taille du fichier $name > ".(int)($taillemax/1024)." Ko";
elseif(!@is_uploaded_file($temp))
$erreur = "Téléchargement de $name impossible";
elseif(!@move_uploaded_file($temp, $destination))
$erreur = "Problème de transfert de $name";
if($erreur) $focus = 7;
else
{
#---------------------------------lecture et conversion du fichier------------------------------------#
if($openf = @fopen($destination, "rb"))
{
$fichier = fread($openf, filesize($destination));
@fclose($openf);
#--------------------------------- encodage norme RFC 2045------------------------------------#
$piecejointe = chunk_split(base64_encode($fichier));
}
else
{
$erreur = "Problème de lecture du fichier $name";
$focus = 7;
}
}
}
$piecejointe2 = "";# pièce jointe
if(!$erreur && strlen($_FILES['Fichier2']['name']))
{
$fichier2 = $_FILES['Fichier2'];
#---------------------------------upload du fichier sur le serveur------------------------------------#
$temp2 = $fichier2['tmp_name'];
$name2 = $fichier2['name'];
$size2 = $fichier2['size'];
$destination2 = $rep.$name2;
if($size2 > $taillemax)
$erreur = "Taille du fichier $name2 > ".(int)($taillemax/1024)." Ko";
elseif(!@is_uploaded_file($temp2))
$erreur = "Téléchargement de $name2 impossible";
elseif(!@move_uploaded_file($temp2, $destination2))
$erreur = "Problème de transfert de $name2";
if($erreur) $focus = 7;
else
{
#---------------------------------lecture et conversion du fichier------------------------------------#
if($openf = @fopen($destination2, "rb"))
{
$fichier2 = fread($openf, filesize($destination2));
@fclose($openf);
#--------------------------------- encodage norme RFC 2045------------------------------------#
$piecejointe2 = chunk_split(base64_encode($fichier2));
}
else
{
$erreur = "Problème de lecture du fichier $name2";
$focus = 7;
}
}
}
if(!$erreur) # pas d'erreur donc on continue
{
#--------------------------------- traitement du tableau $_POST qui contient les paires name => value-----------------------------------#
$message_final = "";
foreach($_POST as $key => $value)
{
# la deuxième partie du test passe les champs non désirés dans le mail // pour passer d'autres champs les séparer par |
if (strlen($value) && !eregi("(MAX_FILE_SIZE)", $key))
$message_final .= "$key : ".strip_tags($value)."\n";
}
# formatage du message de confirmation affiché
$message = ereg_replace("(\n|\r|\r\n)", "<br>", htmlentities($message_final)); # conversion des sauts de ligne et des caractères spéciaux
$objet = "$entete ".$_POST['Objet'];
# si l'email n'est pas renseigné on le remplace par celui du destinataire, en ajoutant une alerte au message
$final_mail = $_POST['Email'];
if(empty($_POST['Email']))
{
$final_mail = $destinataire;
$message_final .= "\nNe pas répondre par mail : email absent.\n";
}
# en-têtes
$headers = "From: ".$final_mail;
if(strlen($email_cc))
$headers .= "\nCC: ".$email_cc;
if(strlen($email_bcc))
$headers .= "\nBCC: ".$email_bcc;
# si pièce jointe on ajoute l'en-tête spécifique avec séparateurs
if(strlen($piecejointe) || strlen($piecejointe2))
{
$boundary = "/-------".md5(uniqid(rand()))."-------/"; // séparateur
$headers .= "\nMIME-Version: 1.0\nContent-Type: multipart/mixed; boundary=\"$boundary\"\n";
$message_final =
"This is a multi-part message in MIME format.\n--$boundary\n".
"Content-Type: text/plain; charset=ISO-8859-1\n".
"Content-Transfer-Encoding: 7bit\n\n".
"$message_final\n\n--$boundary\n".
"Content-Type: $mimetype; name=\"$name\"\n".
"Content-Transfer-Encoding: base64\n".
"Content-Disposition: attachment; filename=\"$name\"\n\n".
"$piecejointe\n--".
"Content-Type: $mimetype; name=\"$name2\"\n".
"Content-Transfer-Encoding: base64\n".
"Content-Disposition: attachment; filename=\"$name2\"\n\n".
"$piecejointe2\n--".
$boundary."--\n";
}
# envoi du mail
if (@mail($destinataire, stripslashes($objet), stripslashes($message_final), $headers))
{
@unlink($destination); // suppression de la pièce jointe
@unlink($destination2); // suppression de la pièce jointe
$pageName = "Le mail a été envoyé !";
}
else
{
$pageName = "Echec !";
$erreur = "Echec de l'envoi ! Merci d'essayer encore SVP";
}
}
else {
$pageName = "Erreur de saisie !";
} // if(!$erreur)
}
else {
$_POST = false;
} // if ($_POST)
?>
[taille=grand][couleur=rouge]LE FORMULAIRE (enfin juste la partie avec les pièces jointes)[/couleur](code tronqué)[/taille]
Code : PHP
<form name="formulaire" action="<? echo $_SERVER['PHP_SELF']?>" method="post" enctype="multipart/form-data">
<?if (file_exists($rep)) { ?>
<p>
<label for="fichier">CV</label><input type="hidden" name="MAX_FILE_SIZE" value="<? echo $taillemax?>"/><input type="file" maxlength="60" id="fichier" <? if($focus == 7) echo "class=\"focus\"";?> name="Fichier"/>
<p>
<label for="fichier2">Lettre de motivation</label><input type="hidden" name="MAX_FILE_SIZE" value="<? echo $taillemax?>"/><input type="file" maxlength="60" id="fichier2" <? if($focus == 7) echo "class=\"focus\"";?> name="Fichier2"/>
<? } ?>
<input id="submit" type="submit" value="Envoyer"/><br/>
</p>
</form>