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

Résolu
Arctara Messages postés 526 Date d'inscription   Statut Membre Dernière intervention   -  
Arctara Messages postés 526 Date d'inscription   Statut Membre Dernière intervention   - 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

le père
 
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   Statut Membre Dernière intervention   78
 
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