Envoi de 2 pièces jointes en mail php

Résolu
tomeck Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
tomeck Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

voici un code qui me permet d'envoyer un mail par php avec deux pièces jointes.

problème: une seul pièce jointe est envoyer.
apres plusieurs modifications toujours pas de resultat, il m'en prend qu'une soit la première soit la deuxième selon le changement de code.

merci pour votre aide.

<?php

$uphoto = $_FILES["fichierTexte"]['name'];
$upimage  = $_FILES["fichierTexte"]['tmp_name'];
$upsize  = $_FILES["fichierTexte"]['size'];
$mail = $_POST['destinataire']; // Déclaration de l'adresse de destination.

//=====preparation fichier2.
$uphoto2 = $_FILES["fichierTexte2"]['name'];
$upimage2  = $_FILES["fichierTexte2"]['tmp_name'];
$upsize2  = $_FILES["fichierTexte2"]['size'];


if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}

//=====Déclaration des messages au format texte et au format HTML.
$message_txt = stripslashes(htmlspecialchars($_POST['texte']));
$message_html = "<html><head></head><body><b>".stripslashes(htmlspecialchars($_POST['texte']))."</b></body></html>";
//==========
 
//=====Lecture et mise en forme de la pièce jointe.
$fichier   = fopen("".$upimage."", "r");
$attachement = fread($fichier, filesize("".$upimage.""));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
 
 //=====Lecture et mise en forme de la pièce jointe2.
$fichier   = fopen("".$upimage2."", "r");
$attachement = fread($fichier, filesize("".$upimage2.""));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = $_POST['titre'];
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"$pseudo\"<".$_POST['delapartde'].">".$passage_ligne;
$header.= "Reply-to: \"$pseudo\" <".$_POST['delapartde'].">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====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=\"UTF-8\"".$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=\"UTF-8\"".$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=\"$uphoto\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"$uphoto\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 

//=====Ajout de la pièce jointe2.
$message.= "Content-Type: image/jpeg; name=\"$uphoto2\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"$uphoto2\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 

//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========
// Redirection du visiteur vers la page du minichat
header('Location: proposition.php');
?>





A voir également:

3 réponses

Mazamazine Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   13
 
Si je ne m'abuse, tu utilise le même nom de variable pour plusieurs choses des 2 PJ, $attachement par exemple que tu écrases...
1
tomeck Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
bonjour Mazamazine,

j'ai effectué plusieurs essai, dont celui de definir d'autres noms de variables.
voici le code avec les changements,
le resultat: le mail est bien envoyer mais avec toujours une seul pièce jointe.
en locurence la première. alors qu'avec l'autre code j'avais que la deuxième.

<?php

$uphoto = $_FILES["fichierTexte"]['name'];
$upimage  = $_FILES["fichierTexte"]['tmp_name'];
$upsize  = $_FILES["fichierTexte"]['size'];
$mail = $_POST['destinataire']; // Déclaration de l'adresse de destination.

//=====preparation fichier2.
$uphoto2 = $_FILES["fichierTexte2"]['name'];
$upimage2  = $_FILES["fichierTexte2"]['tmp_name'];
$upsize2  = $_FILES["fichierTexte2"]['size'];


if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}

//=====Déclaration des messages au format texte et au format HTML.
$message_txt = stripslashes(htmlspecialchars($_POST['texte']));
$message_html = "<html><head></head><body><b>".stripslashes(htmlspecialchars($_POST['texte']))."</b></body></html>";
//==========
 
 
 
//=====Lecture et mise en forme de la pièce jointe.
$fichier   = fopen("".$upimage."", "r");
$attachement = fread($fichier, filesize("".$upimage.""));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
 
 //=====Lecture et mise en forme de la pièce jointe2.
$fichier2   = fopen("".$upimage2."", "r");
$attachement2 = fread($fichier2, filesize("".$upimage2.""));
$attachement2 = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = $_POST['titre'];
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"$pseudo\"<".$_POST['delapartde'].">".$passage_ligne;
$header.= "Reply-to: \"$pseudo\" <".$_POST['delapartde'].">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====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=\"UTF-8\"".$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=\"UTF-8\"".$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=\"$uphoto\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"$uphoto\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 

//=====Ajout de la pièce jointe2.
$message.= "Content-Type: image/jpeg; name=\"$uphoto2\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"$uphoto2\"".$passage_ligne;
$message.= $passage_ligne.$attachement2.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 


//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========
// Redirection du visiteur vers la page du minichat
header('Location: proposition.php');
?>


après quelques recherche sur différents forums cela pourrais provenir d'une "boundary" que je devrais recréer. mais j'avoue que je n'est pas tout a fait compris cette partie du code.
merci pour l'aide.
0
tomeck Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
merci!!!!! j'ai trouver!!!!
c'etait effectivement un boundary en trot entre les deux pièces jointes.

voici le code fonctionnelle pour tous ceux qui aurait le même problème que moi!

<?php

$uphoto = $_FILES["fichierTexte"]['name'];
$upimage  = $_FILES["fichierTexte"]['tmp_name'];
$upsize  = $_FILES["fichierTexte"]['size'];
$mail = $_POST['destinataire']; // Déclaration de l'adresse de destination.

//=====preparation fichier2.
$uphoto2 = $_FILES["fichierTexte2"]['name'];
$upimage2  = $_FILES["fichierTexte2"]['tmp_name'];
$upsize2  = $_FILES["fichierTexte2"]['size'];


if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail)) // On filtre les serveurs qui présentent des bogues.
{
	$passage_ligne = "\r\n";
}
else
{
	$passage_ligne = "\n";
}

//=====Déclaration des messages au format texte et au format HTML.
$message_txt = stripslashes(htmlspecialchars($_POST['texte']));
$message_html = "<html><head></head><body><b>".stripslashes(htmlspecialchars($_POST['texte']))."</b></body></html>";
//==========
 
 
 
//=====Lecture et mise en forme de la pièce jointe.
$fichier   = fopen("".$upimage."", "r");
$attachement = fread($fichier, filesize("".$upimage.""));
$attachement = chunk_split(base64_encode($attachement));
fclose($fichier);
//==========
 
 //=====Lecture et mise en forme de la pièce jointe2.
$fichier2   = fopen("".$upimage2."", "r");
$attachement2 = fread($fichier2, filesize("".$upimage2.""));
$attachement2 = chunk_split(base64_encode($attachement2));
fclose($fichier2);
//==========
 
//=====Création de la boundary.
$boundary = "-----=".md5(rand());
$boundary_alt = "-----=".md5(rand());
//==========
 
//=====Définition du sujet.
$sujet = $_POST['titre'];
//=========
 
//=====Création du header de l'e-mail.
$header = "From: \"$pseudo\"<".$_POST['delapartde'].">".$passage_ligne;
$header.= "Reply-to: \"$pseudo\" <".$_POST['delapartde'].">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/mixed;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
 
//=====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=\"UTF-8\"".$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=\"UTF-8\"".$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=\"$uphoto\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: inline; filename=\"$uphoto\"".$passage_ligne;
$message.= $passage_ligne.$attachement.$passage_ligne.$passage_ligne;
$message.= $passage_ligne.$passage_ligne; 
//========== 

$message.= "--".$boundary.$passage_ligne;

//=====Ajout de la pièce jointe2.
$message.= "Content-Type: image/jpeg; name=\"$uphoto2\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: base64".$passage_ligne;
$message.= "Content-Disposition: attachment; filename=\"$uphoto2\"".$passage_ligne;
$message.= $passage_ligne.$attachement2.$passage_ligne.$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne; 
//========== 


//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
 
//==========
// Redirection du visiteur vers la page du minichat
header('Location: proposition.php');
?>


merci et à bientot pour d'autre soucis! ;)
0