Pour mon application, j'aimerai que mon visiteur puisse envoyer une "capture d'écran" de sa réalisation à un ami par mail. J'arrive a avoir Flex & PHP connectés ensemble et ils savent envoyer un mail, mais l'image ne veut pas s'envoyer... La pièce jointe est de 2octets ou moins, et est donc bien sur "endommagée" ...

Mon application ne me retourne pas d'erreur, mais bien un message me disant que mon mail a bien été envoyée.
J'ai trouvé les posts suivant sur internet et j'ai essayé de les adapter à mon app, mais sans succes...

Saving entire Flash document as JPEG to email as an attachment
Sending an E-mail with attachment with PHP from Flex

Voici la partie FLEX de mon code

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
private function sendMail():void{
            var _nomSTF:String = nomSTF.text;
            var _emailSTF:String = emailSTF.text;
            var _emailFriendSTF:String = emailFriendSTF.text;
            var _sujetSTF:String = sujetSTF.text;
            var _messageSTF:String = messageSTF.text;
 
            //IMAGE
            var fr:FileReference = new FileReference();
            var encoder:PNGEncoder = new PNGEncoder();
 
            var screenshotData:BitmapData = new BitmapData(conteneurDeMonImage.width, conteneurDeMonImage.height, true, 0xFFFFFF);
 
            screenshotData.draw(conteneurDeMonImage);
            //var outputData:ByteArray = encoder.encode(screenshotData);
            //var base64:Base64Encoder = new Base64Encoder();
            var png:PNGEncoder = new PNGEncoder();
            byteArray = png.encode(screenshotData);
 
            //base64.encodeBytes(outputData);
            //FIN IMAGE
 
 
            var evValidMail:ValidationResultEvent = emailSTFValidator.validate();
            var evValidMailFriend:ValidationResultEvent = emailFriendSTFValidator.validate();
            var evValidName:ValidationResultEvent = nomSTFValidator.validate();
 
            if (evValidMail.type == ValidationResultEvent.VALID
                && evValidName.type == ValidationResultEvent.VALID
                && evValidMailFriend.type == ValidationResultEvent.VALID){
                emailService.send({senderName: _nomSTF, senderEmail:_emailSTF, emailFriendSTF: _emailFriendSTF,
                    emailSubject:_sujetSTF, emailMessage: _messageSTF, file : byteArray});
            } else {
                resultLabel.text="There are Form errors";
                resultLabel.setStyle("styleName", "invalid");
            }
        }
 
        private function emailResultSTF():void{
            Alert.show("Votre message a bien été envoyé");
            containerSendToFriend.visible = false;
        }
<fx:Declarations>
 
    <s:HTTPService id="emailService" url="src/mail.php" method="POST"
                    resultFormat="xml" useProxy="false"
                    result="emailResultSTF()"
                    fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail + '\n' + event.message.toString())"/>
 
</fx:Declarations>
Voici la partie PHP :

Code php : Sélectionner tout - Visualiser dans une fenêtre à part
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
$fileatt_type = "application/octet-stream"; 
$fileatt_name = "baignoireElyseeConcept.png";
$sender_name =  $_POST['senderName'];
$email_from = $_POST['senderEmail']; 
$email_subject = $_POST['emailSubject'];  
$email_message = $_POST['emailMessage'];  
 
$email_to = $_POST['emailFriendSTF']; 
 
$headers = 'From:'.$sender_name.'<'.$email_from.'>';   
 
$data= $_POST['file'];
 
$semi_rand = md5(time());   
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";   
 
$headers .= "\nMIME-Version: 1.0\n" .   
            "Content-Type: multipart/mixed;\n" .   
            " boundary=\"{$mime_boundary}\"";   
 
$email_message = "This is a multi-part message in MIME format.\n\n" .   
                "--{$mime_boundary}\n" .   
                "Content-Type:text/html; charset=\"utf-8\"\n" .   
               "Content-Transfer-Encoding: 7bit\n\n" .   
$email_message . "\n\n";   
 
 
$email_message .= "--{$mime_boundary}\n" .   
                  "Content-Type: {$fileatt_type};\n" .   
                  " name=\"{$fileatt_name}\"\n" .
                  "Content-Transfer-Encoding: base64\n\n" .   
                 $data . "\n\n" .   
                  "--{$mime_boundary}--\n";   
 
$mailsend = mail($email_to, $email_subject, $email_message, $headers);

D'avance merci pour votre aide.