Envoi de 2 pièces jointes en mail php [Résolu/Fermé]

Signaler
Messages postés
12
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
29 octobre 2015
-
Messages postés
12
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
29 octobre 2015
-
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');
?>





3 réponses

Messages postés
81
Date d'inscription
mercredi 27 février 2008
Statut
Membre
Dernière intervention
10 février 2015
11
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
12
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
29 octobre 2015
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.
Messages postés
12
Date d'inscription
mardi 9 décembre 2014
Statut
Membre
Dernière intervention
29 octobre 2015
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! ;)