Форум 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=201612)

TuMko 18.06.2013 23:56

Не работает отправка на почту с других ПК
 
Реализована функция отправки сообщения на почту. На моем компе все работает, на других компах не работает. Сам php файл лежит на сервере. В чем проблема?

Код AS3:

package  
{
        /**
        * ...
        * @author 123
        */

        import flash.display.*;
        import flash.events.*;
        import flash.net.URLLoader;
        import flash.net.URLRequest;
        import flash.net.URLVariables;
        import flash.text.*;
 
        public class SendMail extends Sprite
        {
                private var mailSpite:Sprite = new Sprite();
                private var sprite:Sprite = new Sprite();
                private var formatText1:TextFormat = new TextFormat();
                private var formatText2:TextFormat = new TextFormat();
                private var formatMenuScheme:TextFormat = new TextFormat();
                private var nextbutton:MiniCustomSimpleButton = new MiniCustomSimpleButton();
                private var nextButtonText:TextField = new TextField();
                private var infoText1:TextField = new TextField();
                private var infoText2:TextField = new TextField();
                private var infoTextFormat:TextFormat;
 
                public function SendMail()
                {
                        formatText1.font = "Tahoma";
                        formatText1.size = 20;
                        formatText1.color = 0x666666;
                        formatText1.align = TextFormatAlign.JUSTIFY;
 
                        formatText2.bold = true;
                        formatText2.font = "Tahoma";
                        formatText2.size = 16;
                        formatText2.color = 0x666666;
 
                        formatMenuScheme.bold = true;
                        formatMenuScheme.font = "Tahoma";
                        formatMenuScheme.size = 16;
                        formatMenuScheme.color = 0x666666;
 
                        infoTextFormat = new TextFormat();
                        infoTextFormat.font = "Tahoma";
                        infoTextFormat.size = 20;
                        infoTextFormat.color = 0x666666;
 
                        var windowFrame:Sprite = new Sprite();
                        windowFrame.graphics.lineStyle(3, 0x999999);
                        windowFrame.graphics.beginFill(0xFFFFFF, 1);
                        windowFrame.graphics.drawRoundRect(250, 180, 540, 130, 15, 15);
                        windowFrame.graphics.endFill();
 
                        var text1:TextField = new TextField();
                        text1.text = MainMenu.lang.SendMailText1;    //"Для завершения выполнения работы необходимо заполнить данные, которые будут отправлены преподавателю в виде отчета о выполнении лабораторной работы.";
                        text1.autoSize = TextFieldAutoSize.LEFT;
                        text1.x = 10;
                        text1.y = 80;
                        text1.setTextFormat(formatText1);
                        text1.wordWrap = true;
                        text1.width = 980;
 
                        var text2:TextField = new TextField();
                        text2.text = MainMenu.lang.SendMailText2;          //  "ФИО:";
                        text2.autoSize = TextFieldAutoSize.LEFT;
                        text2.x = 270;
                        text2.y = 215;
                        text2.setTextFormat(formatText2);
                        text2.wordWrap = true;
                        text2.width = 80;
                        text2.height = 30;
 
                        var text3:TextField = new TextField();
                        text3.text = MainMenu.lang.SendMailText3;  //"Группа:";
                        text3.autoSize = TextFieldAutoSize.LEFT;
                        text3.x = 270;
                        text3.y = 255;
                        text3.setTextFormat(formatText2);
                        text3.wordWrap = true;
                        text3.width = 80;
                        text3.height = 30;               
 
 
                        infoText1.type = TextFieldType.INPUT;
                        infoText1.border = true;
                        infoText1.borderColor = 0xFF0000;
                        infoText1.background = true;
                        infoText1.backgroundColor = 0xCCCCCC;
                        infoText1.restrict = "a-z A-Z а-я А-Я";
                        infoText1.x = 350;
                        infoText1.y = 210;
                        infoText1.width = 400;
                        infoText1.height = 30;
                        infoText1.maxChars = 35// количество символов
                        infoText1.defaultTextFormat = infoTextFormat;
 
                        infoText2.type = TextFieldType.INPUT;
                        infoText2.border = true;
                        infoText2.borderColor = 0xFF0000;
                        infoText2.background = true;
                        infoText2.backgroundColor = 0xCCCCCC;
                        infoText2.restrict = "a-z A-Z а-я А-Я 0-9";
                        infoText2.x = 350;
                        infoText2.y = 250;
                        infoText2.width = 400;
                        infoText2.height = 30;
                        infoText2.maxChars = 35// количество символов
                        infoText2.defaultTextFormat = infoTextFormat;
 
 
                        nextbutton.x = 900;
                        nextbutton.y = 1;
                        nextbutton.visible = false;
 
                        nextButtonText.text = MainMenu.lang.SendMailText4;    //"Отправить";
                        nextButtonText.autoSize = TextFieldAutoSize.CENTER;
                        nextButtonText.x = 920;
                        nextButtonText.y = 10;
                        nextButtonText.setTextFormat(formatMenuScheme);
                        nextButtonText.mouseEnabled = false;  // отвечает за перекрытие - отключено (с. 607)                       
                        nextButtonText.visible = false;
 
 
 
                        mailSpite.addChild(nextbutton);
                        mailSpite.addChild(nextButtonText);
                        mailSpite.addChild(windowFrame);
                        mailSpite.addChild(text1);
                        mailSpite.addChild(text2);
                        mailSpite.addChild(text3);
                        mailSpite.addChild(infoText1);
                        mailSpite.addChild(infoText2);
                        addChild(mailSpite);
 
                        nextbutton.addEventListener (MouseEvent.CLICK, clickNextButton);
 
                        infoText1.addEventListener(Event.ENTER_FRAME, vis);
                        infoText2.addEventListener(Event.ENTER_FRAME, vis);
 
 
                }
 
                private function clickNextButton (e:MouseEvent):void {
                        var url:String = "http://........../11/emailLR1.php";
                        var request:URLRequest = new URLRequest(url);
                        var v:URLVariables = new URLVariables();
                        var urlLoader:URLLoader = new URLLoader();
                        v.name = infoText1.text;    // 'Petya';
                        v.message = infoText2.text;  //'hello';
                        request.data = v;
                        request.method = "POST";
                        urlLoader.load(request);
 
                        removeChildAt(0);
                        sprite = new Sprite();
                        var newMainMenuPage:MainMenu = new MainMenu();
                        sprite.addChild(newMainMenuPage);
                        addChild(sprite);
                }
 
                private function vis (e:Event):void {
                        if(infoText1.text!="" && infoText2.text!="")
                                {
                                        nextbutton.visible = true;
                                        nextButtonText.visible = true;
                                } else {
                                        nextbutton.visible = false;
                                        nextButtonText.visible = false;
                                }
 
                }
 
        }
 
}


PHP код:

<?php 
header
('Content-Type: text/html; charset=utf-8'); 
 
$name =iconv("utf-8""cp1251"$_POST["name"] );
 
$message =iconv("utf-8""cp1251"$_POST["message"] ); 
  
 
mail("petya@mail.ru","ЛР №1 выполнена"
      
"Студент : $name\nГруппа : $message""Content-type:text/plane; Charset=windows-1251\r\n"); 
?>


maxkar 19.06.2013 00:09

Подпишитесь на IOErrorEvent, SecurityErrorEvent в loader и скажите, с какой именно ошибкой не работает код. Или отладочный плеер поставьте. Скорее всего, securityError (нет crossdomain.xml), но могут быть и другие варианты.

TuMko 19.06.2013 00:32

SecurityErrorEvent выдало следующее:

[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048"]

IOErrorEvent ничего не выдал.

maxkar 19.06.2013 00:49

Ага. crossdomain.xml нужен по адресу "http://........../crossodmain.xml" (в корне домена). В простейшем случае пойдет
Код:

<?xml version="1.0" ?>
<cross-domain-policy>
    <allow-access-from domain="*"/>
    <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>

(доступ флешки с любого домена)

Для более сложных случаев читайте документацию.

TuMko 19.06.2013 01:49

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

KumoKairo 19.06.2013 20:07

100% проблема из-за URLLoader'ов, URLRequest'ов и прочего
Решается подгрузкой кросдоменного файла, пример которого написал товарищ maxkar. Загружайте в самом начале программы с помощью
Код AS3:

 System.security.loadPolicyFile("http://..../pf.xml");

Цитата:

но есть подозрение, что на другом компе пхп файл даже не вызывается при обращении.
Все верно, пока не скормите ему кросдомейн - не будут работать URL реквесты


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

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