Foros del Web » Creando para Internet » Flash y Actionscript »

tutorial de como Enviar correos desde Flash con ActionScript 3

Estas en el tema de tutorial de como Enviar correos desde Flash con ActionScript 3 en el foro de Flash y Actionscript en Foros del Web. Siguiendo con las cosas buenas que trae ActionScript 3 hoy veremos como enviar correos desde flash utilizando solamente ActionScript. Para ello usaremos la clase 'Socket', ...
  #1 (permalink)  
Antiguo 17/06/2008, 23:10
Avatar de ESTRELLADELSUR  
Fecha de Ingreso: febrero-2008
Ubicación: en La Floresta
Mensajes: 32
Antigüedad: 16 años
Puntos: 0
tutorial de como Enviar correos desde Flash con ActionScript 3

Siguiendo con las cosas buenas que trae ActionScript 3 hoy veremos como enviar correos desde flash utilizando solamente ActionScript. Para ello usaremos la clase 'Socket', que se encuentra dentro del paquete 'flash.net'.

Primero creemos una clase a la que llamaremos SendMail, en primera instancia importamos las clases a utilizar:

Código :


Cita:
package clases { //Importamos clases a utilizar import flash.net.Socket; import flash.errors.*; import flash.events.*; import flash.utils.*;}
De todas las que tenemos allí, la de mayor importancia es la "flash.net.Socket". Esta clase permite a ActionScript crear una conexión ó Socket para leer o escribir datos. Una vez que importamos las clases empezamos a codificar ya la clase en si, declaramos algunas variables a utilizar y el constructor de la clase

Código :

Cita:
public class SendMail extends Socket { private var response:String; private var conectado:Boolean = false; private var shost:String; private var errorLog:String = ""; //Constructor de la clase public function SendMail(host:String = null, port:int = 0) { //Llamamos al constructor de la super clase shost = host; super(host, port); configureListeners(); }}
Dentro de las variables tenemos:

response: Donde almacenaremos la respuesta o información recibida por el servidor
conectado: que nos permitirá saber si la conexión al Socket fue exitosa o no

shost: Aquí almacenaremos el nombre del host, ya veremos más adelantes para que la usaremos
Nuestra clase extiende de Socket; es por ello que en nuestro constructor llamamos al constructor de la súper clase, le pasamos el host, que bien puede ser, o la dirección IP o el nombre del servidor de correo y el puerto a conectarnos. Generalmente es el 25. Una vez hecho esto tenemos un método llamado configureListeners():

Código :


Cita:
private function configureListeners():void { addEventListener(Event.CONNECT, connectHandler); addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);}
Asignamos lo manejadores de evento a utilizar. Esta vez solo usaremos el "Event.CONNECT", que se llama una vez que la conexión al host es establecida y el 'ProgressEvent.SOCKET_DATA', que es llamado cuando se recibe alguna respuesta del servidor.

Código :

Cita:
private function connectHandler(event:Event):void { //Si el servidor establece la conexión, cambiamos el valor de la variable conectado = true;}private function socketDataHandler(event:ProgressEvent):void { readResponse();}
En la primera se coloca el valor 'true' a la variable conectado y en la segunda se llama a una función llamada readResponse(). Cada vez que el servidor genera o envía una respuesta a los datos enviados

Código :

Cita:
private function readResponse():void { var str:String = readUTFBytes(bytesAvailable); response += str; trace(response.toString());}

Arriba vemos la función readResponse(), que imprime mediante el trace. Los datos de respuesta del servidor aparecen mediante la propiedad readUTFBytes, en forma de string. Luego, vamos a crear un getter que nos permitirá saber si el servidor se encuentra conectado o no

Código :

Cita:
public function get IsConnect():Boolean{ return this.conectado;}
Una vez finalizado esto, vamos a crear la función que se encargara de enviar el mail. Quizas han enviado correo mediante telnet alguna vez, los que no revisen cómo hacerlo. Es lo que usaremos, veamos la función:

Código :

Cita:
public function sendRequest(sender:String = "[email protected]", reciver:String = "[email protected]", subject:String = null, msg:String = null):void { response = ""; //Cuando establecimos la coneción al host, estribimos en el flujo del socket. la información //para el envio del mail try { this.writeUTFBytes ("HELO "+shost+"\r\n"); this.writeUTFBytes ("MAIL FROM: <"+sender+">\r\n"); this.writeUTFBytes ("RCPT TO: <"+reciver+">\r\n"); this.writeUTFBytes ("DATA\r\n"); this.writeUTFBytes ("From : "+sender+"\r\n"); this.writeUTFBytes ("To : "+reciver+"\r\n"); this.writeUTFBytes ("Subject: "+subject+"\r\n"); this.writeUTFBytes ("Mime-Version: 1.0\r\n"); this.writeUTFBytes ("Content-Type: text/html; charset=UTF-8; format=flowed\r\n"); this.writeUTFBytes (msg+"\r\n"); this.writeUTFBytes (".\r\n"); } catch(e:IOError) { trace(e); } flush();}


La función recibimos los siguientes datos

sender: El correo de la persona que envía

reciver: A quien va dirigido el mail

subject: Asunto del correo

msg: Cuerpo del mensaje en si

Luego el método writeUTFBytes se encarga de escribir datos en el flujo del socket. Los datos escritos utilizando este método no son transmitidos inmediatamente si no que se colocan en cola y son transmitidos una vez que se ejecuta el método flush(), que tenemos más abajo.

EXTRAIDO: de cristalab.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:45.