更新:請參閱消息底部的BitmapData到電子郵件
你好所有,這裏的問題: 我試圖採取在Flash中的影片剪輯的「截圖」,其編碼爲Jpg使用AS Core Lib JPGEncoder類,然後將POST提交給PHP,並將圖像嵌入到MIME編碼的電子郵件中。
目前,我測試過在本地保存編碼圖像,並且工作,所以編碼器肯定是工作。電子郵件發送,它有一個100kb的jpg附件,但它應該包含錯誤的數據,因爲它在任何應用程序中都無法正常打開。
這裏的動作腳本:
trace("Sending Email");
var rootMC:MovieClip = MovieClip(root);
var data1:BitmapData = new BitmapData(rootMC.width, rootMC.height);
data1.draw(rootMC);
var en:JPGEncoder = new JPGEncoder(80);
var bArray:ByteArray= en.encode(data1);
var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
var request:URLRequest = new URLRequest();
request.requestHeaders.push(header);
request.url = mailLoc;//MailLoc is the URL of the PHP.
request.method = URLRequestMethod.POST;
request.data = bArray;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.BINARY;
loader.addEventListener(Event.COMPLETE, MailCompleteHandler);
try
{
loader.load(request);
}
catch(error:Error)
{
trace("Unable to load URL");
}
這裏是PHP:
require_once 'lib/swift_required.php';
$image = file_get_contents("php://input");
$attachment = SwiftAttachment::newInstance($image, 'submission.jpg', 'image/jpg');//<--This line stuffs it
$message = Swift_Message::newInstance()
/*Give the message a subject*/
->setSubject('Your subject')
/*Set the from address with an associative array*/
->setFrom(array('[email protected]'=>'Battle for Brisbane'))
/*Set the to addresses with an associative array*/
->setTo(array('[email protected]'))
/*Give it a body*/
->setBody('Congratulations! You submission to Battle for Brisbane was received');
$message->attach($attachment);//<--When the attachment above is commented out, so is this
$transport = Swift_SendmailTransport::newInstance();
$mailer = Swift_Mailer::newInstance($transport);
$mailer->send($message);
更新:現在,我使用的SwiftMailer代替手工編寫出來的MIME。但是,這裏是新的協議:在php代碼中,我標記了一條將張貼的圖像數據作爲jpg附加到電子郵件的行。如果我註釋掉這一行,並且消息 - >附加行,那麼每個都會發送正常。但是,如果他們沒有註釋,那麼就不會發送電子郵件,這導致我相信嘗試從提供的數據創建jpg附件會導致問題。 這一切都證實了我對PHP腳本收到的數據不正確的懷疑。多好,令人沮喪。
既然你可以保存的圖像服務器和查看它,這個問題是不相關的Flash,除了chunk_split/base64編碼當你保存圖像與電子郵件發送時,還有什麼不同?您是否嘗試過使用服務器上保存的JPG格式的同一電子郵件例程? – ocodo 2011-03-22 23:49:24