Envoi de 2 pièces jointes en mail php

Résolu/Fermé
tomeck Messages postés 12 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 29 octobre 2015 - 5 févr. 2015 à 15:10
tomeck Messages postés 12 Date d'inscription mardi 9 décembre 2014 Statut Membre Dernière intervention 29 octobre 2015 - 6 févr. 2015 à 12:18
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 mercredi 27 février 2008 Statut Membre Dernière intervention 10 février 2015 13
5 févr. 2015 à 21:57
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 mardi 9 décembre 2014 Statut Membre Dernière intervention 29 octobre 2015 1
6 févr. 2015 à 11:37
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 mardi 9 décembre 2014 Statut Membre Dernière intervention 29 octobre 2015 1
6 févr. 2015 à 12:18
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