Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/12/2010, 17h55   #1
Membre du Club
 
Inscription : mars 2004
Messages : 208
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 208
Points : 63
Points : 63
Par défaut Soucis envoi mail avec pièce jointe

Bonjour,
Si je mets le message html je reçois un mail avec en pièce jointe mon message version html et si j'envoie mon message version texte je récupère bien une pièce jointe mais encodé avec lettre et chiffre donc pas très parlant pour le personne qui reçois le mail.
Je vous remets tous mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
$uploaddir = './img/';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo "Le fichier est valide, et a été téléchargé avec succès. Voici plus d'informations :\n";
} else {
echo "Attaque potentielle par téléchargement de fichiers. Voici plus d'informations :\n";
print_r($_FILES);
}
//----------------------------------------------- 
//DECLARE LES VARIABLES 
//----------------------------------------------- 
 
$destinataire='mail_destinataire'; 
$message_texte="Bonjour,\nVoici un message au format texte :\n\n
Nom : ".$_POST['nom']." ".$_POST['prenom']."\nE-mail : ".$_POST['mail']."\nDemande : \n".$_POST['msg']; 
$email_reply=$email_expediteur=$_POST['mail'];
 
$message_html="Bonjour,<br>Voici un message au format texte :<br><br>
Nom : ".$_POST['nom']." ".$_POST['prenom']."<br>E-mail : ".$_POST['mail']."<br>Demande : <br>".$_POST['msg']; 
$email_reply=$email_expediteur=$_POST['mail'];
 
$sujet="Formulaire contact site web";
 
//----------------------------------------------- 
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML 
//----------------------------------------------- 
 
$frontiere = '-----=' . md5(uniqid(mt_rand())); 
 
//----------------------------------------------- 
//HEADERS DU MAIL 
//----------------------------------------------- 
 
$headers = 'From: "Nom" <'.$email_expediteur.'>'."\n"; 
$headers .= 'Return-Path: <'.$email_reply.'>'."\n"; 
$headers .= 'MIME-Version: 1.0'."\n"; 
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"'; 
 
//----------------------------------------------- 
//MESSAGE TEXTE 
//----------------------------------------------- 
$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"; 
 
//----------------------------------------------- 
//PIECE JOINTE 
//----------------------------------------------- 
 
$message .= 'Content-Type: image/jpeg; name="'.$uploadfile.'"'."\n"; 
$message .= 'Content-Transfer-Encoding: base64'."\n"; 
$message .= 'Content-Disposition:attachement; filename="'.$uploadfile.'"'."\n\n"; 
 
$message .= chunk_split(base64_encode(file_get_contents($uploadfile)))."\n"; 
 
if(mail($destinataire,$sujet,$message,$headers)) 
{ 
 echo 'Le mail a été envoyé'; 
} 
else 
{ 
 echo 'Le mail n\'a pu être envoyé'; 
}
Donc si quelqu'un voit un truc je suis preneur.
Merci d'avance
shelko est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 21h04   #2
Débutant
 
Homme Laurent
Webmaster
Inscription : octobre 2006
Messages : 2 873
Détails du profil
Informations personnelles :
Nom : Homme Laurent
Âge : 48
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Activité : Webmaster
Secteur : Industrie

Informations forums :
Inscription : octobre 2006
Messages : 2 873
Points : 1 320
Points : 1 320
Bonsoir,

je n'ai pas regardé en détail ton code (je ne suis pas un spécialiste), cela dit, j'avais développé aussi un envoi de mail avec pièce attachée (et visiblement, nous avons pris la même source d'inspiration) ; je te mets mon code, si ça peut t'aider (il marche bien, si les pièces jointes sont des images) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
$chemin_destination = 'upload/';
	move_uploaded_file($_FILES['file']['tmp_name'], $chemin_destination.$_FILES['file']['name']);
	$adr_file=$chemin_destination.$_FILES['file']['name'];
 
	//-----------------------------------------------
	//DECLARE LES VARIABLES
	//-----------------------------------------------
	$exp=$mail;
	$email_expediteur=$exp;
	$email_reply=$exp;
	$destinataire=$mail;
 
	$frontiere = '-----=' . md5(uniqid(mt_rand()));
 
	//-----------------------------------------------
	//HEADERS DU MAIL
	//-----------------------------------------------
 
	$headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
	$headers.= 'Return-Path: <'.$email_reply.'>'."\n";
	$headers.= 'MIME-Version: 1.0'."\n";
	$headers.= 'Content-Type: multipart/mixed; boundary="'.$frontiere."\"\n\n";
 
	//-----------------------------------------------
	//MESSAGE
	//-----------------------------------------------
 
	$message ='This is a multi-part/mixed message in MIME format.'."\n";
	$message.='--'.$frontiere."\n";
	$message.='Content-Type: text/html; charset="ISO-8859-1"'."\n";
	$message.='Content-Transfer-Encoding: base64'."\n\n";
 
	$message.=chunk_split(base64_encode(nl2br($msg)))."\n";
 
	//-----------------------------------------------
	//PIECE JOINTE
	//-----------------------------------------------
 
	$base=basename($adr_file);
 
	$message.='--'.$frontiere."\n";
	$message.= 'Content-Type: image/jpeg; name='.$base."\n";
	$message.= 'Content-Transfer-Encoding: base64'."\n";
	$message.= 'Content-Disposition:attachement; filename='.$base."\n\n";
	$message.= chunk_split(base64_encode(file_get_contents($adr_file)))."\n";
	$message.='--'.$frontiere.'--'."\n";
 
	if(@mail($destinataire,$sujet,$message,$headers)){
		echo '---OK---'."\n";
}
 
 
	 else{
		echo '---pas OK---'."\n";
	}
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2010, 22h23   #3
Membre du Club
 
Inscription : mars 2004
Messages : 208
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 208
Points : 63
Points : 63
En fait c'était tout c... j'avais oublié la frontière.
shelko est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h59.


 
 
 
 
Partenaires

Hébergement Web