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 >V38?3 ?
_ٶ?m ~(a R 0ͱ +oG3 m[ߥ
9lf?l/Qc0 ac >Vf / Ks0? )f ϕ_𣙇a ? K6|* ?3 ?
_ٶ?m ~(a R 0ͱ +oG3 m[ߥ
9lf?l/Qc0 ac >Vf /<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<39VcuhNb\ Ͻ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*=su0J1J-*[۽kv8xymnk?% 1Fһa#?
pJ66;պn*+#.No j**մ8SvblwjK;*=cYc
*itegw{촾IX뚔?5Ln <gS:QRǹ?!}rީ֩ig{'GiÑeO&gQLzs8>:ez%=peXbvnSHx.Y:ƜfI_[Y{PE cHP3M6Zʬ*dB<C siO' G ɤ*'*%+ _S-<M56/DJ#h*PHpocZ8z-(?$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!TN 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?Ou4R+Z
cq"#k[K/Q)U!y-GnvoW5`3L^]'<%G_(4KU7.j~I/hykU[-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攗FQ8m }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%1K 4*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...