Mail html avec piece jointe [Résolu]

Signaler
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005
-
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005
-
Bonjour,
j'ai récupérer une source sur le site que j'ai ensuite modifier pour pouvoir envoyer plusieurs pieces jointes,
les pieces son bien attaché mais le texte html n'est pas afficher.
si kelkun pouvais m'expliquer le principe des boundary car je pense que c'est de la ke viend le pb, voici mon code :

$limite = "_parties_".md5(uniqid (rand()));
$mail_mime = "MIME-Version: 1.0\n";
$mail_mime .= "Content-Type: multipart/alternative;\n";
$mail_mime .= " boundary="----=".$limite.""\n\n";

//le corps du message
$texte = "This is a multi-part message in MIME format.\n";
$texte .= "Ceci est un message est au format MIME.\n";
$texte .= "------=".$limite."\n";
$texte .= "Content-Type: text/html; charset="iso-8859-1"\n";
$texte .= "Content-Transfer-Encoding: quoted-printable\n ";
$texte .= "Content-Disposition: inline \n ";
$texte .= $mail_dprh;
$texte .= "\n\n";
$i=0;


chdir ($dossier);

$attachement = '';
//on ajout toutes les pieces jointes
while($i < $taille)
{
$longeur = strlen ($variables_liste_fichier[$i]);
$longeur -=3;
if(substr($variables_liste_fichier[$i],$longeur) == "doc")
{
$type = 'application/msword';
}
else
$type = 'application/pdf';

$attachement .= "------=".$limite."\n";
$attachement .= "Content-Type: ".$type." name=".$variables_liste_fichier[$i]."\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=".$variables_liste_fichier[$i]."\n\n";

$fd = fopen( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i], "rb" );
$contenu = fread( $fd, filesize( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i] ) );


$attachement .= chunk_split(base64_encode($contenu));

$attachement .= "\n\n\n------=".$limite."\n";

$i++;

}
if ( mail( [mailto:bidule@bidule.fr', $objet_dprh, $texte.$attachement bidule@bidule.fr', $objet_dprh, $texte.$attachement], $mail_mime) )
{
//on affiche un message indiquant l'envoi du message
echo 'Demande envoyée

';
}
else
{
//on affiche un message indiquant l'echec de l'envoi du message
echo ' Echec de l\'envoi de la demande

';
}

12 réponses

Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

J'ai trouver moi-même la solution après avoir pas mal galèré! en fait ilo fau metre le boundary fermant uniquement a la fin du mail ;)


SOLUTION :


$limite = "----=_Part_" . md5( uniqid ( rand() ) );
$mail_mime = "MIME-Version: 1.0\r\n";
$mail_mime .= "Content-Type: multipart/mixed;
boundary="".$limite.""\r\n";



//le corps du message
$texte = "This is a multi-part message in MIME format.\n";
$texte .= "Ceci est un message est au format MIME.\n";
$texte .= "--".$limite."\n";
$texte .= "Content-Type: text/html; charset="iso-8859-1"\n";
$texte .= "Content-Transfer-Encoding: quoted-printable\n ";
$texte .= "Content-Disposition: inline \n\n ";
$texte .= $mail_dprh;
$texte .= "\n\n";
$texte .= "\n\n";
$i=0;


chdir ($dossier);
$attachement = '';
//on ajout toutes les pieces jointes
while($i < $taille)
{
$longeur = strlen ($variables_liste_fichier[$i]);
$longeur -=3;
if(substr($variables_liste_fichier[$i],$longeur) == "doc")
{
$type = "application/msword";
}
else
$type = "application/pdf";

$attachement .= "--".$limite."\n";
$attachement .= "Content-Type: ".$type." name=".$variables_liste_fichier[$i]."\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=".$variables_liste_fichier[$i]."\n\n";

$fd = fopen( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i], "rb" );
$contenu = fread( $fd, filesize( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i] ) );


$attachement .= chunk_split(base64_encode($contenu));

$i++;

}
$attachement .= "\n\n--".$limite."--\n\n";

if ( mail([mailto:bidule@bidule.fr',$objet_dprh,$texte.$attachement,$mail_mime bidule@bidule.fr',$objet_dprh,$texte.$attachement,$mail_mime]) )
{
//on affiche un message indiquant l'envoi du message
echo 'Demande envoyée

';
}
else
{
//on affiche un message indiquant l'echec de l'envoi du message
echo ' Echec de l\'envoi de la demande

';
}
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
15
"The boundary parameter is an arbitrary value used as an identifier in the e-mail. Therefore, for the most part, the boundary parameter can be set to whatever you like (as long as it is a unique value). -> http://www.zend.com/zend/spotlight/sendmimeemailpart1.php#Heading3

http://phpmailer.sourceforge.net/tutorial.html#3 -> c'est une classe pour mailer qui te fait meme un cafe!

Ceci dit, je sais po pourquoi ca foire ton truc

Ceci dit, en observant un msg avec multi pieces jointes, j'ai l'impression que c'est plutot ta construction de l'attachement qui est fausse car dans les mails avecplusieurs pieces jointes il y a des "------_=_NextPart_"... observe la source d'un message
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

ba j'ai regarder la source de mes mails mais je trouve tjs pas l'erreur
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

le truc c'est que les pieces jointes sont bien ajouté avec leur contenu mais ya pas le texte html!
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
15
T'as regarde si tes pieces jointes sont valides? Parce que peut etre que la premiere est patchee au texte!
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

ouai elle son valides cé pour ca ke je compren pa
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

par contre il ya une troisime piece jointe nommée ATT10005.ATT ki pèse 96 octet qui est vide et ke je n'est pas attaché
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

et la source du message est ca :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1"></HEAD>
</HTML>
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

J'ai trouver moi-même la solution après avoir pas mal galèré! en fait ilo fau metre le boundary fermant uniquement a la fin du mail ;)


SOLUTION :


$limite = "----=_Part_" . md5( uniqid ( rand() ) );
$mail_mime = "MIME-Version: 1.0\r\n";
$mail_mime .= "Content-Type: multipart/mixed;
boundary="".$limite.""\r\n";



//le corps du message
$texte = "This is a multi-part message in MIME format.\n";
$texte .= "Ceci est un message est au format MIME.\n";
$texte .= "--".$limite."\n";
$texte .= "Content-Type: text/html; charset="iso-8859-1"\n";
$texte .= "Content-Transfer-Encoding: quoted-printable\n ";
$texte .= "Content-Disposition: inline \n\n ";
$texte .= $mail_dprh;
$texte .= "\n\n";
$texte .= "\n\n";
$i=0;


chdir ($dossier);
$attachement = '';
//on ajout toutes les pieces jointes
while($i < $taille)
{
$longeur = strlen ($variables_liste_fichier[$i]);
$longeur -=3;
if(substr($variables_liste_fichier[$i],$longeur) == "doc")
{
$type = "application/msword";
}
else
$type = "application/pdf";

$attachement .= "--".$limite."\n";
$attachement .= "Content-Type: ".$type." name=".$variables_liste_fichier[$i]."\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=".$variables_liste_fichier[$i]."\n\n";

$fd = fopen( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i], "rb" );
$contenu = fread( $fd, filesize( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i] ) );


$attachement .= chunk_split(base64_encode($contenu));

$i++;

}
$attachement .= "\n\n--".$limite."--\n\n";

if ( mail([mailto:bidule@bidule.fr',$objet_dprh,$texte.$attachement,$mail_mime bidule@bidule.fr',$objet_dprh,$texte.$attachement,$mail_mime]) )
{
//on affiche un message indiquant l'envoi du message
echo 'Demande envoyée

';
}
else
{
//on affiche un message indiquant l'echec de l'envoi du message
echo ' Echec de l\'envoi de la demande

';
}
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

J'ai trouver moi-même la solution après avoir pas mal galèré! en fait ilo fau metre le boundary fermant uniquement a la fin du mail ;)


SOLUTION :


$limite = "----=_Part_" . md5( uniqid ( rand() ) );
$mail_mime = "MIME-Version: 1.0\r\n";
$mail_mime .= "Content-Type: multipart/mixed;
boundary="".$limite.""\r\n";



//le corps du message
$texte = "This is a multi-part message in MIME format.\n";
$texte .= "Ceci est un message est au format MIME.\n";
$texte .= "--".$limite."\n";
$texte .= "Content-Type: text/html; charset="iso-8859-1"\n";
$texte .= "Content-Transfer-Encoding: quoted-printable\n ";
$texte .= "Content-Disposition: inline \n\n ";
$texte .= $mail_dprh;
$texte .= "\n\n";
$texte .= "\n\n";
$i=0;


chdir ($dossier);
$attachement = '';
//on ajout toutes les pieces jointes
while($i < $taille)
{
$longeur = strlen ($variables_liste_fichier[$i]);
$longeur -=3;
if(substr($variables_liste_fichier[$i],$longeur) == "doc")
{
$type = "application/msword";
}
else
$type = "application/pdf";

$attachement .= "--".$limite."\n";
$attachement .= "Content-Type: ".$type." name=".$variables_liste_fichier[$i]."\n";
$attachement .= "Content-Transfer-Encoding: base64\n";
$attachement .= "Content-Disposition: attachment; filename=".$variables_liste_fichier[$i]."\n\n";

$fd = fopen( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i], "rb" );
$contenu = fread( $fd, filesize( 'demande_'.$num_demande.'_'.$variables_liste_fichier[$i] ) );


$attachement .= chunk_split(base64_encode($contenu));

$i++;

}
$attachement .= "\n\n--".$limite."--\n\n";

if ( mail([mailto:bidule@bidule.fr',$objet_dprh,$texte.$attachement,$mail_mime bidule@bidule.fr',$objet_dprh,$texte.$attachement,$mail_mime]) )
{
//on affiche un message indiquant l'envoi du message
echo 'Demande envoyée

';
}
else
{
//on affiche un message indiquant l'echec de l'envoi du message
echo ' Echec de l\'envoi de la demande

';
}
Messages postés
1154
Date d'inscription
mardi 9 septembre 2003
Statut
Membre
Dernière intervention
15 août 2009
15
on acompris, pas besoin de le repeter 3 fois
Messages postés
35
Date d'inscription
jeudi 3 mars 2005
Statut
Membre
Dernière intervention
22 août 2005

pardon c'est une erreur du navigateur