Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как отправить письмо с пристегнутой картинкой? (http://www.flasher.ru/forum/showthread.php?t=146935)

cv' 22.11.2010 14:09

Как отправить письмо с пристегнутой картинкой?
 
Доброго вам, уважаемые Flash-самураи!
Я довольно долго безуспешно пытался найти комплексное решение для следующей задачи:

Во флешке есть готовая форма следующего содержания:
Имя, почта, прочая информация, и картинка. Картинка является bitmapdata, или jpg (созданный из этой bitmapdata c помощью com.adobe.images.JPGEncoder).

Вопрос в том, какой нужно написать взаимный скрипт на флеше и на php, чтобы эта информация посылалась письмом с прикрепленным джепегом.

При этом желательно не сохранять на сервере лишние копии.

cleptoman 22.11.2010 14:37

http://www.flasher.ru/forum/showthread.php?t=146875

ну чуть бы поиск пользовали..позавчера тему поднимали.

Хомяк 22.11.2010 14:47

Какой именно момент вызывает у вас затруднение? Отправка данных формы из флеша на сервер? Или отправка письма с вложением? Или вы ищете некий плагин который выполняет и то и другое?

NikolyA 22.11.2010 15:52

Цитата:

Сообщение от Хомяк (Сообщение 951462)
Или отправка письма с вложением?

тоже интересно про отправку с вложением, что для этого надо чтоб реализовать такую отправку

-De- 22.11.2010 16:09

google
php mail attachment
php письмо вложением
также не такая простая задача отправить флэшке постом бинарные данные, но тут где-то было =)

cv' 22.11.2010 16:32

Цитата:

Сообщение от cleptoman (Сообщение 951458)
http://www.flasher.ru/forum/showthread.php?t=146875

ну чуть бы поиск пользовали..позавчера тему поднимали.

Это очень круто! Большое спасибо!

Добавлено через 6 часов 1 минуту
Круто... Только не пойму по какому принципу все работает. Письма посылаются с пятого раза на шестой. К какому серверу конектится? smtp.mail.ru постоянно выдает ошибки 500... Где можно почитать о там как все это устроено? Я читал на сайте разработчкика, там тыща комментов в которых я не смог найти нужной информации... =(

Хомяк 23.11.2010 18:51

Цитата:

Сообщение от NikolyA (Сообщение 951476)
тоже интересно про отправку с вложением, что для этого надо чтоб реализовать такую отправку

Извиняюсь - не смотрел эту тему после своего поста. По поводу отправки с вложением - поковыряйте этот сайт, это кстати статья о функции mail(). Посмотрите здесь же на форуме, кто то да подымал этот вопрос. Я что то делал по этому поводу, но давно, да и скрипт себе не оставлял.

cv' 23.11.2010 19:26

Я знаю, как работает функция mail. Я не знаю как залить на сервак картинку и пристегнуть ее к письму.

Хомяк 23.11.2010 20:55

Цитата:

Сообщение от cv' (Сообщение 951818)
Я знаю, как работает функция mail. Я не знаю как залить на сервак картинку и пристегнуть ее к письму.

Поэтому я и дал вам ссылку на ресурс где обсуждаются подобные вещи, а это о том, как "залить на сервак".

cv' 23.11.2010 22:03

На сколько я знаю, класс FileReference не позволяет закачать контент созданный во флеше, он позволяет работать только с файлами на компьютере пользователя и закачивать их. А у меня bitmapdata, созданная во флеше, и bytesarray созданный из нее, с помощью JPGEncoder. Или можно без лишних диалоговых окон сделать из битмассива файл в FileReference? Параметр data предательски открыт только для чтения =(

А на сайте про php я не нашел поиска, и следовательно не нашел главного ответа - в каком формате php скрипт должен принимать файл. Просто очередным значением в массиве POST?

cleptoman 23.11.2010 22:34

10 плеер FileReference.save

Хомяк 23.11.2010 22:51

Про php, посмотрите на их форуме, не может быть что бы эта тема там не поднималась. Да и поиск там есть, может не на всех страницах только.
Про FileReference. Действительно, эта штука для отправки локальных файлов. А как отправлять созданные изображения я не знаю, не приходилось делать. Но думаю, вы не хуже меня можете погуглить :).

cleptoman серьёзно? В хелпе так :"...Открывает диалоговое окно, позволяющее пользователю сохранить файл в локальной файловой системе...Этот метод можно вызывать только в ответ на пользовательское событие (например, в обработчике событий щелчка мыши или нажатия клавиши). В противном случае в результате вызова этого метода в приложении Flash Player возникает ошибка...".

gloomyBrain 24.11.2010 00:39

Цитата:

не нашел главного ответа - в каком формате php скрипт должен принимать файл. Просто очередным значением в массиве POST
По идее - в массиве $_FILES

По поводу того, как отправить картинку - я писал об этом в блоге

cleptoman 24.11.2010 00:43

хомяк, а я что, где то оспорил хелп? )

Хомяк 24.11.2010 07:06

cleptoman я не понял вас. Автор темы хочет отправить созданное в приложении содержимое и какую то еще инфу на сервер, а вы предлагаете ему сохранить файл в локальной файловой системе?

cv' 25.11.2010 19:10

Спасибо всем, кто откликнулся. Все получилось! =)

Так выглядит код сервера:

PHP код:

<?

    $to 
$_POST["to"] ? $_POST["to"] : "mail@mail.net";
    
$from $_POST["from"] ? $_POST["from"] : "mail@mail.com";
    
$message2 $_POST["message"] ? $_POST["message"] : "some message";

    
$subject "?????? ???????";

    
$fileatt      $_FILES['fileatt']['tmp_name'];
    
$fileatt_type $_FILES['fileatt']['type'];
    
$fileatt_name $_FILES['fileatt']['name'];

    
$file fopen($fileatt,'rb');
    
$data fread($file,filesize($fileatt));
    
fclose($file);

    
$headers "From:$from";
    
$headers .= "\nReply-To:$from";

    
// Generate a boundary string
    
$semi_rand md5(time());
    
$mime_boundary "==Multipart_Boundary_x{$semi_rand}x";

    
// Add the headers for a file attachment
    
$headers .= "\nMIME-Version: 1.0\n" .
                
"Content-Type: multipart/mixed;\n" .
                
" boundary=\"{$mime_boundary}\"";

    
// Add a multipart boundary above the plain message
    
$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" .
               
$message2 "\n\n";

    
// Base64 encode the file data
    
$data chunk_split(base64_encode($data));

    
// Add file attachment to the message
    
$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";

    
mail($to,$subject,$message,$headers);
?>

И вот так, (большое спасибо gloomyBrain), клиент:

Код AS3:

import net.request.field.File;
import net.request.field.MIMEType;
import net.request.Request;
import org.bytearray.smtp.encoding.JPEGEncoder;
import flash.net.URLRequestMethod;
import flash.net.URLLoader;
 
var myEncoder = new JPEGEncoder( 900 );
var myCapStream:ByteArray = myEncoder.encode (bitmapData);
 
var request:Request = new Request("http://server.net/mail.php", {
        to:"mail@mail.ru",
        from:"mail@mail.net",
        message:"some message"
},URLRequestMethod.POST);
var file:File = new File("fileatt", myCapStream, "image" + new Date().getTime() + ".jpg", MIMEType.IMAGE_JPEG);
request.files.push(file);
var loader:URLLoader = new URLLoader();
loader.load(request.toURLRequest());
loader.addEventListener(Event.COMPLETE, report);


cleptoman 25.11.2010 19:36

2 Хомяк. я про пост №10


Часовой пояс GMT +4, время: 09:43.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.