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";
?>

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