Prcdent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la scurit, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres rseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Rponse Proposer ce sujet en actualit
 
Outils de la discussion
Publicit
'
Vieux 27/05/2011, 00h14   #1
Invit de passage
 
Homme
Webdesigner
Inscription : mai 2011
Messages : 2
Dtails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activit : Webdesigner
Secteur : Communication - Mdias

Informations forums :
Inscription : mai 2011
Messages : 2
Points : 0
Points : 0
Bonjour,

Jaimerai envoyer une image dans un mail en pice jointe grce un script PHP.

Limage est gnre par un swf et envoy la page PHP au travers dune variable POST. Pour faire cela jai suivi la mthode suivante : http://www.adobe.com/devnet/flash/ar..._graphics.html

Suite cela jai essay de modifier un script PHP pour lenvoyer en pice jointe dans un mail.
Jarrive faire ce mail avec une pice jointe MAIS la pice jointe est corrompu . L'image est illisible, quand j'ouvre l'image avec le bloc note il y a plein de sauts de lignes (alors que quand je regarde l'image gnr par le script dans la page en lien ci-dessus, il n'y a pas ces sauts de lignes). Et je ne comprends pas du tout pourquoi .




Les lignes concernant la pice jointe sont les suivantes : 107 109 et 147 152
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
 
<?php
	/*
		********************************************************************************************
		CONFIGURATION
		********************************************************************************************
	*/
	// destinataire est votre adresse mail. Pour envoyer  plusieurs  la fois, sparez-les par une virgule
	$destinataire = 'monmail@mondomaine.fr';
 
	// copie ? (envoie une copie au visiteur)
	$copie = 'non';
 
	// Action du formulaire (si votre page a des paramtres dans l'URL)
	// si cette page est index.php?page=contact alors mettez index.php?page=contact
	// sinon, laissez vide
	$form_action = '';
 
	// Messages de confirmation du mail
	$message_envoye = "Votre message nous est bien parvenu !";
	$message_non_envoye = "L'envoi du mail a chou, veuillez ressayer SVP.";
 
	// Message d'erreur du formulaire
	$message_formulaire_invalide = "Vrifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
 
	/*
		********************************************************************************************
		FIN DE LA CONFIGURATION
		********************************************************************************************
	*/
 
	/*
	 * cette fonction sert  nettoyer et enregistrer un texte
	 */
	function Rec($text)
	{
		$text = trim($text); // delete white spaces after & before text
		if (1 === get_magic_quotes_gpc())
		{
			$stripslashes = create_function('$txt', 'return stripslashes($txt);');
		}
		else
		{
			$stripslashes = create_function('$txt', 'return $txt;');
		}
 
		// magic quotes ?
		$text = $stripslashes($text);
		$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
		$text = nl2br($text);
		return $text;
	};
 
	/*
	 * Cette fonction sert  vrifier la syntaxe d'un email
	 */
	function IsEmail($email)
	{
		$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
		return (eregi($pattern,$email)) ? true : false;
	};
 
	$err_formulaire = false; // sert pour remplir le formulaire en cas d'erreur si besoin
 
	// si formulaire envoy, on rcupre tous les champs. Sinon, on initialise les variables.
	$nom     = (isset($_POST['nom']))     ? Rec($_POST['nom'])     : '';
	$prenom	 = (isset($_POST['prenom']))     ? Rec($_POST['prenom'])     : '';
 
	$phonfixe = (isset($_POST['phonfixe']))   ? Rec($_POST['phonfixe'])   : '';
	$phonport   = (isset($_POST['phonport']))   ? Rec($_POST['phonport'])   : '';
	$email   = (isset($_POST['mail']))   ? Rec($_POST['mail'])   : '';
 
	$objet   = (isset($_POST['objet']))   ? Rec($_POST['objet'])   : '';
	$monmessage = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
 
	$monenvoi = (isset($_POST['envoi'])) ? Rec($_POST['envoi']) : '';
	$monfilename =  (isset($_POST['fileName'])) ? Rec($_POST['fileName']) : '';
 
 
	if (isset($_POST['envoi']))
	{
		// On va vrifier les variables et l'email ...
		$email = (IsEmail($email)) ? $email : ''; // soit l'email est vide si erron, soit il vaut l'email entr
		$err_formulaire = (IsEmail($email)) ? false : true;
 
		if (($nom != '') && ($email != '') && ($objet != '') && ($monmessage != ''))
		{
			// les 4 variables sont remplies, on gnre puis envoie le mail
			//$headers .= "MIME-Version: 1.0\r\n";
 
 
			$headers = "Date: ".date("l j F Y, G:i")."\n";
			$headers .= "MIME-Version: 1.0\n";
			$headers .= "Content-Type: multipart/mixed;\n";
			$headers .= " boundary=\"----=$limite\"\n\n"; 
			$headers .= 'From: '.$nom.' '.$prenom.' <'.$email.'>' . "\r\n";
 
			// envoyer une copie au visiteur ?
			if ($copie == 'oui')
			{
				$cible = $destinataire.','.$email;
			}
			else
			{
				$cible = $destinataire;
			};
 
			//$attachement = chunk_split(base64_decode($_POST["image"]));
			$attachement = base64_decode($_POST["image"]);
			//$attachement = chunk_split($_POST["image"]);
 
			$message = "------=$limite\n"; 
			$message .='Content-Type: text/html; charset="iso-8859-1"'. "\n"; 
			$message .='Content-Transfer-Encoding: 8bit'. "\n"; 
			$message .= "\n";
			$message .= '<html>
							<head>
							  <title>'.$objet.'</title>
							</head>
							<body bgcolor="#FFFFFF" style="font-family:Arial, Helvetica, sans-serif">
							  <p><strong><em>Informations :</em></strong></p>
							  <table border="2" cellspacing="0" bordercolor="#CCCC30" bgcolor="#FFFFFF" bordercolordark="#CCCC30" cellpadding="7">
								<tr>
								  <th>Nom</th><th>Prenom</th><th>tlphone fixe</th><th>tlphone portable</th><th>Email</th>
								</tr>
								<tr>
								  <td>'.$nom.'</td><td>'.$prenom.'</td><td>'.$phonfixe.'</td><td>'.$phonport.'</td><td>'.$email.'</td>
								</tr>
							  </table><br>
							  <p>valeur de la vaiable envoi : '.$monenvoi.'</p>
							  <p>Nom du fichier : '.$monfilename.'</p>
							  <p><strong><em>Message :</em> '.$objet.'</strong></p>
							  <p>'.$monmessage.'</p>
							</body>
						</html>
					'."\n";
			//$message .= $attachement; 
			$message .= "------=$limite\n"; 
 
			// Remplacement de certains caractres spciaux
			//$message = html_entity_decode($message);
			//$message = str_replace(''',"'",$message);
			//$message = str_replace('',"'",$message);
			//$message = str_replace('<br>','',$message);
			//$message = str_replace('<br />','',$message);
 
 
			$message .= 'Content-Type: image/jpeg; name="image" \n';
			$message .= "Content-Transfer-Encoding: base64 \n";
			$message .= 'Content-Disposition: attachment; filename="image.jpeg"'; 
			$message .= " \n\n";
			$message .= $attachement;
			$message .= "------=$limite\n"; 
 
 
// a ajouter icic/////////////////////////////////////////////////////////////////////////////////////////////////:
			// Envoi du mail
			if (mail($cible, $objet, $message, $headers))
			{
				echo '<p>'.$message_envoye.'</p>'."\n";
			}
			else
			{
				echo '<p>'.$message_non_envoye.'</p>'."\n";
			};
		}
		else
		{
			// une des 3 variables (ou plus) est vide ...
			echo '<p style="color:#C00">'.$message_formulaire_invalide.'</p>'."\n";
			$err_formulaire = true;
		};
	}; // fin du if (!isset($_POST['envoi']))
 
?>

Je vous remercie par avance pour votre aide.

la pice jointe corrompu se prsente ainsi dans le bloc note :

Citation:
JFIF    



 %# , #&')*)-0-(0%()(



(((((((((((((((((((((((((((((((((((((((((((((((((((  |   
  } !1AQa"q2#BR$3br
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz  
  w !1AQaq"2B #3Rbr
$4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz   ? 4>F{Kvf &5$ڰm_5qա
INI%'̳c >V—38?3 ?
_ٶ?m ~(a R 0ͱ +oG3 m[ߥ
9lf?l/Qc0 ac >VŽf / Ks0? )f ϕ_𣙇a ? K6|* ?3 ?
_ٶ?m ~(a R 0ͱ +oG3 m[ߥ
9lf?l/Qc0 ac >VŽf /<W߳[ѝ?+Jm'oQܶnsڴY Eg-τ?a_r ҙn۲s)PU\kk_R' 5^aA!@  P@  P@ x/ 2 *ҟSN s n=H UpOTKs3W [ra<=hVJ*?\?ue2wR
K3_qU16<k*

a/{;}AP@ 9
Գ ʖ]{+l)*/ᬻ K$v> A(P{>L͵*?(?i? iVp۟qG"[¿ 2ӰDf9!Fx8!9(xZtfaTv^pZ6\.4%ZJ>[t=k*. 0* 8MS.)dٽl+5N+٬NNFgB#r[nu#&8T՚LeƜ+4⛷ tk8uuD}UJ߀*Y8{>FAN4r|>6qOezl5G`0L|gA%#˅4;T`dԚm>:Xm[[IkH}#qQUrKz(*
*xÛ/) ˟ J}O8b?M#AV_?Q-ό?a_r ҙnM ý2ysĘ z=+6j<.4*SI%e'{^848*mGCj*qnm[cDXsNn ]^E@*NXnyW<{s<m`RA}>[\5g .84󪮣^HkY>vgO}w;y$rVeC.aFb(!!Cq4l:r1P:"h<39VcuhN b\ ϽqFJџw3l^N5~M~Uued# áx[F:T*Stӳ]A@CqfB:`qSqktw80QjPSVwM]];ki!@!K ̹ o?J# ۏd?e \ AF /)pPN{[&C 6+Z\h}n[e+Gܖ*vn5c
ONo(2ЌV-:rZ*C}"MkXMcMo䴼x8fHԏ4O<7gX_ޟT5 bhza@4;B;kHI8US9.ilq|,V*\ݾm-6v"wJ˚N],el]*%)[3o,ԜG;o
7S?75ӄ9添c<GV&vC~1gq^/>cN=dX ٷ =Ƽ#h(?i? iVp۟qG"[¿ 2#
ϰPQ=$ߛm+c X]j0ޣL=s_CJq5fXL/[ %ʢgև*|:Q#G#Hg#8*=s u0J1J-*[۽kv8xymnk?% 1Fһa#?
pJ66;պn*+#.No j**մ8Svblw jK;*=cYc
*itegw{촾IX뚔?5Ln <gS:QRǹ?!}rީ֩ig{'GiÑeO&gQLzs8>:ez%=peXbvnSHx.Y:ƜfI_[Y{PE cHP3M6Zʬ*dB<C siO' G ɤ*'*%+ _S-<M5 6/DJ#h*PHp ocZ8z-(?$bU⋴
uh_U!mNoTsN7G*q<U\/TS)^Ӵ1'!*}fzgҴ^u~&ugO?]vIYzՉAW
R5Kfs3/%Px@ ˟ J}O8b?M#AV_?Q-ό?a_r ҙn
h> _F*)g!T N  rQg|M5RK>7T+/Nwc#W
wggvU
lt:yit4t^4o,jz/?sbFuوr+1nKYzl{6t~iM,,=x5}]bK1 Oj5r~;*x$x&(Y+'&j{5 I?կMjD,n`A`/=q`&>El~}VK{|nAJO.+mA?qDJK ǚj%v-Ͱ*QQ][R.^*kF*p$xQޕ0ܑLs^ _&8S_
ow@*,*CY0\oa1aO Rq.U'ʟ}nZY_M6 /%*SM1 `v8aUEMl|}KK1* ފO''}WVy/ 2 *)># ۏd?e \ AF /)pWĵ
F? O u4R+Z
cq"#k[K/Q)U׌!y-GnvoW5`3L^]'<%G_(4KU7.j~I/hy˜kU[-ln+t*}W ΢*OwWMO8φHgX3Wlsoz'?ibחxv_oud<Ev*9:mZ1; eU(Ji&gGͥս6}eOrF0+sl~g*)GklKLdys:8Z\.Wjkaqq-;:Ľ\
pnhbT&*${mJftmZG$ym段5N|8*UbvmZzGK ̹ o?J>p۟qG"[¿ 2#9?xwRuM@Aoܡ$!@:W]
Fퟡ`2̲AԜѫ5wz_w^[wi=F`,dԗC0x<E<M/
Izt6Yk|Qc\朤ܟQqu1ۓnyTAݖrT1t~(s_4bĺ~*HdҶk7aNMޯ'{[籡[j_Zx\8?CPn|/,qo+#+rVZ:17Խ&,{?(<0* k_[xXI&7.Ҍ(;*^RG^'ɧp]wI7*g=16H۸`YVfXTP+B*wZϵ'˟ J}O8b?M#AV_?Q-ό?a_r ҙn  Pta(}f(^+ݯ۰
ӦR%c¸<xOwT[n}Nkž+D
U
Ӈĺ7V<\G
ƥ(SSvN=OIm*\I'$ĚƤI9>7̳u~%IZ ytgChTFNQi$ӻjJgA\;µsNfm{jejo4A@!K ̹ o?J# ۏd?e \ AF /)q攗F Q8m }kOcQnWcه泡kߕѬ( */X{:uݼҗ$Py˟Q䂃( *8?ŬVŔCwg#1]S|۟OW^YhۥNYس^~ܕ;7:C%ctti]~[f)ϕjX9mngUkv֫? \ ZS~? nDzi
*n|fq #
oY,ݶLѰFlp:qiI7ς*xs$崹Kk$* ENޘR2z4Y.mi@i1gB!'9`?*|F&kVluzujnrq n߁j*C
K⓲xkUψ?D*\#~RJI*<uurQFx7\i
ųw=xۏ^ϳ*>⾟3IeY;f4c;SӖ)Ϛl_heD&WFӳ?kPV5FA@ Sm+Of,s
UIg1"i_ZDX$jG@ T7}>sI9ݾu!K ̹ o?J# ۏd?e \ AF /)p݋~ѻr};**u'JJtݚ54YOsC?7q(>ocID|S;\W' {x'd*?<5Y8Λwk*o#JKܙ f0|{tk*0̩*6>}kypz.Ov RH99J֕5QٻI.5bUE]]7toH\wjk5G.7ȚE;Ncҫ}ߊ_Y8BFҼK"0GjvvT#VQj2v*'K ̹ o?JSb?M#AV_?Q-ό?a_r ҙn  P@ Cskotn`e HN;3
aQU*(UQ w199ݾZ
(s;<^(I$.(+qVt5%
U)4 ۣ'/T>. ԓ⳩ROoCͳ5p$MnKI[w%1K4*p9`:dMt>fx(„#{+诽⿴˟ ># ۏd?e \ AF /)pP@ _PKlK)F]OҪ
)'%tu*aba<\$GAtMf%#Wk?HpS*<ygw#895~Z}ӟWSוwnVK0P@!K ̹ o?J# ۏ]-LV0A*Zw>_5b(ғNr/-}~* 2 _*?(g >i ?PEf?̿AO
,7 >e ZQfٸ/ }~* 0ϙ/֟Yn3| n ??q_ uA a 2 _*?(g >i ?PEf?̿AO
,7 >e ZQfٸ/ }~* 0ϙ/oG|ciJhVo˺k------=
Quand j'ouvre une image jpeg valide dans le BlocNote il n'y a pas tous ces saut de lignes....

Quand j'essaye d'ouvrir l'image corrompu avec Photoshop CS4 j'ai le message d'erreur suivant : "Impossible d'effectuer cette opration car le segment de marqueur JPEG est trop court (le fichier est peut-tre tronqu ou incomplet)"

Si quelqu'un voit la rponse...
jwhy-graphiste est dconnect   Envoyer un message priv Rponse avec citation 00
Vieux 27/05/2011, 07h55   #2
Modrateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de systme d'information
Inscription : septembre 2004
Messages : 1 568
Dtails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
ge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activit : Architecte de systme d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 568
Points : 2 493
Points : 2 493
Bonjour,

As-tu essay d'enregistrer l'image sur ton disque avant de l'envoyer par mail.

a permettrait de savoir si c'est la gnration qui n'a pas fonctionn correctement ou si c'est l'envoi qui corrompt les donnes.
__________________
Si vous ne pouvez expliquer un concept un enfant de six ans, c'est que vous ne le comprenez pas compltement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Rsolu en bas de page quand vous avez obtenu une solution votre problme
Nesmontou est dconnect   Envoyer un message priv Rponse avec citation 00
Vieux 27/05/2011, 08h59   #3
Invit de passage
 
Homme
Webdesigner
Inscription : mai 2011
Messages : 2
Dtails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activit : Webdesigner
Secteur : Communication - Mdias

Informations forums :
Inscription : mai 2011
Messages : 2
Points : 0
Points : 0
Dans la mthode que j'ai suivie pour crer l'image :
http://www.adobe.com/devnet/flash/ar..._graphics.html
Il y a un exemple de fichier PHP trs simple qui gnre l'image. Limage est gnr et on peut l'enregistrer dans Firefox en faisant Firefox> "enregistrer sous". Par contre il y a un truc bizarre : si je fais clicdroit>"enregistrer limage sous" limage ne veut pas senregistrer. Je suis sous firefox 4. Sous IE9 il ny a pas ce problme sauf quil lenregistre en PNG alors que cest un JPG .


le script en question :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php 
	switch ($_POST["format"]) { 
		case 'jpg': 
			header('Content-Type: image/jpeg'); 
			break; 
		case 'png': 
			default: header('Content-Type: image/png'); 
			break; 
	} 
	if ($_POST['action'] == 'prompt') { 
		header("Content-Disposition: attachment; filename=".$_POST['fileName']); 
	} 
	echo base64_decode($_POST["image"]); 
?>
jwhy-graphiste est dconnect   Envoyer un message priv Rponse avec citation 00
Rponse Proposer ce sujet en actualit
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h55.


 
 
 
 
Partenaires

Hbergement Web