wixar

Inscris le 06/06/2007 à 07:04
  • Site web
  • Nombre de sujets
    1
  • Nombre de messages
    12
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses derniers sujets sur les forums

wixar
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
<?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>
LoadingChargement en cours