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 12/11/2011, 23h02   #1
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
Par défaut mail avec plusieurs pièces attachées

Bonsoir,

une recherche sur ce forum et sur le net n'ayant rien donné, je pose mon problème : tout est dans le titre et voici 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
67
68
69
70
 
$msg=$_POST['msg'];
...
$chemin_destination = './';	
	if (isset($_FILES['file1']['name'])) {
	    move_uploaded_file($_FILES['file1']['tmp_name'], $chemin_destination.$_FILES['file1']['name']);
	    $adr_file1=$chemin_destination.$_FILES['file1']['name'];
		}
 
	if (isset($_FILES['file2']['name'])) {
	    move_uploaded_file($_FILES['file2']['tmp_name'], $chemin_destination.$_FILES['file2']['name']);
	    $adr_file2=$chemin_destination.$_FILES['file2']['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
	//-----------------------------------------------
 
	if ($_FILES['file1']['size']>0) {
	$base1=basename($adr_file1);
 
	$message.='--'.$frontiere."\r\n";
	$message.= 'Content-Type: image/jpeg; name='.$base1."\r\n";
	$message.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";
	//$message.= 'Content-Disposition:attachement; filename='.$base1."\n\n";
	$message.= chunk_split(base64_encode(file_get_contents($adr_file1)))."\r\n";
}
 
	if ($_FILES['file2']['size']>0) {
 
	$message.='--'.$frontiere.'--'."\r\n";
	$message.= 'Content-Type: image/jpeg; name='.$base2."\r\n";
	$message.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";
	//$message.= 'Content-Disposition:attachement; filename='.$base2."\n\n";
	$message.= chunk_split(base64_encode(file_get_contents($adr_file2)))."\r\n";
	}
	//$message.='--'.$frontiere.'--'."\r\n";	
 
	if(@mail($destinataire,$sujet,$message,$headers)){
		echo '<iframe src="../envoye/envoye.php" width=1000 height=1000 frameborder=0></iframe>'."\n";
Je sais qu'il existe des librairies qui font ce boulot (phpmailer, swiftmailer...), mais n'ayant pas du tout investigué celles-ci, j'aimerais y arriver par mon code ; mon problème est que seule la première pièce attachée arrive. Quelqu'un peut-il m'aider ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 01h01   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
1ere page en recherche ...
http://www.developpez.net/forums/d10...ieces-jointes/
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 09h28   #3
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
J'étais déjà tombé sur ce post au cours de ma recherche, mais il ne m'a pas permis de résoudre mon problème...(suite de ma réponse en MP)
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 15h06   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par laurentSc Voir le message
J'étais déjà tombé sur ce post au cours de ma recherche, mais il ne m'a pas permis de résoudre mon problème...(suite de ma réponse en MP)
t'as bien fais comme il a fait ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 17h01   #5
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
Citation:
t'as bien fais comme il a fait ?
D'après moi, oui ; j'ai notamment fait gaffe à ça :
Citation:
il ne faut qu'un seul délimiteur+saut de ligne entre les deux pièces jointes
et comme il y a encore un souci, voici mon code actuel :
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
67
68
$chemin_destination = './';	
	if (isset($_FILES['file1']['name'])) {
	    move_uploaded_file($_FILES['file1']['tmp_name'], $chemin_destination.$_FILES['file1']['name']);
	    $adr_file1=$chemin_destination.$_FILES['file1']['name'];
		}
 
	if (isset($_FILES['file2']['name'])) {
	    move_uploaded_file($_FILES['file2']['tmp_name'], $chemin_destination.$_FILES['file2']['name']);
	    $adr_file2=$chemin_destination.$_FILES['file2']['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
	//-----------------------------------------------
 
	if ($_FILES['file1']['size']>0) {
	$base1=basename($adr_file1);
 
	$message.='--'.$frontiere."\n";
	$message.= 'Content-Type: image/jpeg; name='.$base1."\r\n";
	$message.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";
	//$message.= 'Content-Disposition:attachement; filename='.$base1."\n\n";
	$message.= chunk_split(base64_encode(file_get_contents($adr_file1)))."\r\n";
}
 
	if ($_FILES['file2']['size']>0) {
 
	$message.='--'.$frontiere.'--'."\n";
	$message.= 'Content-Type: image/jpeg; name='.$base2."\r\n";
	$message.= 'Content-Transfer-Encoding: base64'."\r\n\r\n";
	//$message.= 'Content-Disposition:attachement; filename='.$base2."\n\n";
	$message.= chunk_split(base64_encode(file_get_contents($adr_file2)))."\r\n";
	}
	//$message.='--'.$frontiere.'--'."\r\n";	
 
	if(@mail($destinataire,$sujet,$message,$headers)){
---
(et l'upload a bien eu lieu : j'ai vérifié)
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 17h05   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
que rend le $message ?

ps : inutile de déplacer le fichier si c'est juste pour prendre le contenu
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 18h00   #7
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
Citation:
que rend le $message ?
Je le mets vraiment ? La réponse est hyper longue...(une centaine de lignes)

Citation:
inutile de déplacer le fichier si c'est juste pour prendre le contenu
Tu veux dire que l'upload est inutile ? Car si je laisse le fichier sur mon disque, ça ne va pas aller...
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 18h33   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
montre un réponse avec des petit fichier texte (genre juste un "hello")

pour le reste enfaite t'as juste pas besoin de faire le move_uploaded_file, pour récupéré le contenu, fait juste une file_get_contents sur le fichier temporaire (tmp_name)
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 18h55   #9
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
Pour ne pas alourdir le forum, je l'ai mis ds un doc (avec les txt, pas de mise en page, donc illisible), donc voici le lien et sinon, OK pour le file_get_contents.
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 19h08   #10
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
avec un petit fichier pas un gros, et pourquoi un fichier Word un fichier txt suffit ...
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 19h15   #11
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
Jette un coup d'oeil au fichier word ; en txt, il mets ça sur 2 lignes, donc illisible...et tu dis petit fichier, pas gros, mais et si le contenu de $message est gros ?

sinon, j'ai aussi essayé le file_get_contents sur le fichier temporaire ($message.= chunk_split(base64_encode(file_get_contents($chemin_dest.$_FILES['file1']['tmp_name'])))."\n";) et
Citation:
Warning: file_get_contents(./tmp/phpYvGQYD) [function.file-get-contents]: failed to open stream: No such file or directory in /homepages/18/d246623212/htdocs/test/mailetpieceattac/action.php on line 88
C'est quoi mon erreur ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 19h19   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
Citation:
Envoyé par laurentSc Voir le message
Jette un coup d'oeil au fichier word ; en txt, il mets ça sur 2 lignes, donc illisible...et tu dis petit fichier, pas gros, mais et si le contenu de $message est gros ?
j'ai pas Word,
montre avec un petit fichier (la taille ne change rien, ça sera juste plus lisible), et fait un <pre> pour les sauts de ligne sinon on vois rien
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 19h55   #13
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
J'avais pensé à ça : lien avec un txt et <pre>
y a rien ds le 2e filename...Mais pas le temps d'investiguer maintenant...
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2011, 20h03   #14
Modérateur
 
Inscription : septembre 2010
Messages : 7 131
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 131
Points : 8 491
Points : 8 491
t'as deux fois la fin du boundary
Code :
-------=099b81ed1523706b2ea546c76b91641a--
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/11/2011, 21h08   #15
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
Bien vu pour la répétition du boundary ;maintenant, ça marche ; par contre si je remplace l'upload par file_get_contents ($message.= chunk_split(base64_encode(file_get_contents($rep_dest.$_FILES['file1']['name'])))."\n"; ; ça ne va pas : quelle mon erreur ?
__________________
Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell
laurentSc est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web