PHP : Fonction mail et pièces jointes...

Résolu/Fermé
Arctara Messages postés 526 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 14 juillet 2012 - 14 févr. 2010 à 11:08
Arctara Messages postés 526 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 14 juillet 2012 - 14 févr. 2010 à 13:49
Bonjour.

Je souhaite envoyer un courrier électronique accompagné d'une pièce jointe. Il semble que j'aie fait une erreur, car à défaut de recevoir le courrier, je ne reçois pas la pièce jointe...

Par ailleurs, j'aimerais savoir s'il est possible d'envoyer deux pièces jointes dans le même courrier électronique en utilisant cette fonction.

Merci d'avance.

<?php 
	$email_expediteur='sysagents@gsw.evoserv.net';
	$email_reponse='sysagents@gsw.evoserv.net';
	$message_texte='Veuillez apprécier, ci-joint sous deux formats différents lisibles à votre préférence, le contenu du courrier que nous vous avons adressé.';

	$message_html='<html> 
		<head> 
			<title>Courrier</title> 
		</head> 
		<body>
			<p>Veuillez apprécier, ci-joint sous deux formats différents lisibles à votre préférence, le contenu du courrier que nous vous avons adressé.</p>
		</body> 
		</html>';

	$frontiere = '-----=' . md5(uniqid(mt_rand()));

	$headers = 'From: "Arya" <'.$email_expediteur.'>'."\n";
	$headers .= 'Return-Path: <'.$email_reponse.'>'."\n";
	$headers .= 'MIME-Version: 1.0'."\n";
	$headers .= 'Content-Type: multipart/mixed;boundary="'.$frontiere.'"';

	$message = 'This is a multi-part message in MIME format.'."\n\n";

	$message .= '--'.$frontiere."\n";
	$message .= 'Content-Type: text/plain;charset="iso-8859-1"'."\n";
	$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
	$message .= $message_texte."\n\n";

	$message .= '--'.$frontiere."\n";

	$message .= 'Content-Type: text/html;charset="iso-8859-1"'."\n";
	$message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
	$message .= $message_html."\n\n";

	$message .= '--'.$frontiere.'--'."\n";

	$message .= 'Content-Type: application/pdf; name="Courrier.pdf"'."\n";
	$message .= 'Content-Transfer-Encoding: base64'."\n";
	$message .= 'Content-Disposition:attachement; filename="Courrier.pdf"'."\n\n";

	$message .= chunk_split(base64_encode(file_get_contents('Courrier.pdf')))."\n";

	mail("dijay@live.fr","Courrier",$message,$headers);
	echo "OK";
?>
A voir également:

2 réponses

Bonjour

Tu mets la frontière qui termine le multipart avant ta pièce jointe, il faut la mettre après ! il doit seulement y avoir la frontière entre deux parties et $frontière.'--' à la fin
Tu peux bien sûr ajouter autant de pièces jointes que tu veux

D'autre part, tu devrais regrouper tes versions texte brut / texte html dans un champ avec un Content-Type: multipart/alternative; et une autre frontière, sinon les deux versions sont visibles dans le message
0
Arctara Messages postés 526 Date d'inscription samedi 9 août 2008 Statut Membre Dernière intervention 14 juillet 2012 78
14 févr. 2010 à 13:49
Euh... Tu pourrais me donner le code qu'il faudrait, parce que je suis un peu perdu là...
Désolé :s

EDIT : c'est bon je viens de comprendre (j'avais sauté une ligne en lisant ta réponse). J'essaie ça tout de suite, merci.

EDIT (2) : ça fonctionne parfaitement. Merci beaucoup!
0