У меня похожая была проблема. Тоже задавал здесь вопрос, но так никто и не решился помочь.
http://www.flasher.ru/forum/showthread.php?t=203810
В итоге после нескольких дней исследований и неудач, сделал я следующее:
1. Сначала сохраняем на сервере картинку.
2. После ответа от сервера о успешном сохранении, берем эту картинку и отправляем на почту (там уже картинка в письме была нормальная).
Добавлено через 10 часов 41 минуту
Вот класс сохранения изображения PHP:

PHP код:
<?php
class SaveImage {
public function __construct() {
}
function saveImage($ba) {
$response = array();
$data = $ba->data;
if(function_exists(gzuncompress)) {
$data = gzuncompress($data);
} else {
trigger_error ("gzuncompress method does not exists, please send uncompressed data", E_USER_ERROR);
}
if ( file_put_contents("rawdata.jpeg", $data) ) {
$response['status'] = 'save_succeed';
} else {
$response['status'] = 'save_error';
}
return $response;
}
}
?>
и AS3:

Код AS3:
package as3lib.net
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.display.BitmapData;
import flash.utils.ByteArray;
import as3lib.images.JPGEncoder;
import flash.net.NetConnection;
import flash.events.NetStatusEvent;
import flash.net.Responder;
import flash.events.EventDispatcher;
import flash.events.Event;
public class SavingImage extends EventDispatcher
{
private var _netConnection: NetConnection;
private var _encoder: JPGEncoder;
/**
* Конструктор
* @param image Изображение
* @param gateWayURL Путь
*/
public function SavingImage(image: DisplayObject, gateWayURL: String)
{
var bmd:BitmapData = new BitmapData(image.width, image.height);
bmd.draw(image);
_encoder = new JPGEncoder(100);
var ba:ByteArray;
ba = _encoder.encode(bmd);
ba.compress();
_netConnection = new NetConnection();
_netConnection.connect(gateWayURL);
_netConnection.addEventListener(NetStatusEvent.NET_STATUS, statusEvent);
_netConnection.call('SaveImage/saveImage', new Responder( handleResult, handleError ), ba);
}
/**
* Функция обрабатывает результат, возвращенный от сервера после сохранения изображения
* @param data
*/
private function handleResult(data:Object):void
{
trace(data.status);
if (data.status == 'save_succeed')
dispatchEvent(new Event(Event.COMPLETE));
}
private function handleError():void
{
trace('error');
}
private function statusEvent(e:NetStatusEvent):void
{
trace(e.info.details);
}
}
}
Класс PHP для отправки письма:
<?php

PHP код:
class Send {
public function __construct() {
}
public function sendMail($data) {
$response = array();
$client_ip = $_SERVER['REMOTE_ADDR'];
$filename = "rawdata.jpeg";
$to = $data->to;
$from = $data->from;
$subject = $data->subject;
$message = iconv('utf-8', 'utf-8', $data->message);
$boundary = "---";
/* Заголовки */
$headers = "From: $from\nReply-To: $from\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"$boundary\"";
$body = "--$boundary\n";
/* Присоединяем текстовое сообщение */
$body .= "Content-type: text/html; charset=utf-8 \r\n";
$body .= "Content-Transfer-Encoding: quoted-printablenn";
$body .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode($filename)."?=\n\n";
$body .= stripslashes($message)."\n";
$body .= "--$boundary\n";
$file = fopen($filename, "r");
$text = fread($file, filesize($filename));
fclose($file);
/* Добавляем тип содержимого, кодируем текст файла и добавляем в тело письма */
$body .= "Content-Type: application/octet-stream; name==?utf-8?B?".base64_encode($filename)."?=\n";
$body .= "Content-Transfer-Encoding: base64\n";
$body .= "Content-Disposition: attachment; filename==?utf-8?B?".base64_encode($filename)."?=\n\n";
$body .= chunk_split(base64_encode($text))."\n";
$body .= "--".$boundary ."--\n";
if (mail($to, $subject, $body, $headers)) {
$response['status'] = 'send_succeed';
} else {
$response['status'] = 'send_error';
}
return $response;
}
}
?>
И AS3:

Код AS3:
package as3lib.net
{
import flash.display.BitmapData;
import flash.events.Event;
import flash.events.EventDispatcher;
import flash.events.NetStatusEvent;
import flash.net.NetConnection;
import flash.net.Responder;
import flash.utils.ByteArray;
import as3lib.images.JPGEncoder;
import flash.display.Sprite;
/**
* ...
* @author ratush
*/
public class SendMail extends EventDispatcher
{
public static const COMPLETE: String = 'complete';
public static const ERROR: String = 'error';
private var _netConnection: NetConnection;
private var _encoder: JPGEncoder;
public function SendMail(gateWayURL: String, data: Object)
{
_netConnection = new NetConnection();
_netConnection.connect(gateWayURL);
_netConnection.addEventListener(NetStatusEvent.NET_STATUS, statusEvent);
_netConnection.call('Send/sendMail', new Responder( handleResult, handleError ), data);
}
private function handleResult( result:Object ):void
{
trace( result.status );
if ( result.status == 'send_succeed' )
dispatchEvent( new Event(SendMail.COMPLETE) );
else
dispatchEvent( new Event(SendMail.ERROR) );
}
private function handleError():void
{
trace('error connect');
}
private function statusEvent(e:NetStatusEvent):void
{
trace(e.info.details);
}
}
}
Тут мы сохраняем картинку и потом отправляем:

Код AS3:
new SavingImage(_model.bitmapSeal, 'http://host.eu9.org/test/amfphp/Amfphp/').addEventListener(Event.COMPLETE, savingImage);
private function savingImage(e:Event):void {
e.target.removeEventListener(Event.COMPLETE, savingImage);
var data: Object = new Object();
data.to = '4884125@i.ua';
data.from = '4884125@i.ua';
data.subject = 'Заказ';
data.message = 'Текст';
new SendMail( 'http://host.eu9.org/test/amfphp/Amfphp/', data);
}