Está en la página 1de 6

Inicio Noticias Articulos Cdigo Foros Enlaces Hosting Anuncios

Categoras destacadas

Encuentra tu curso
Master Auditoria y Seguridad de la Informacion
Master Gestion de Proyectos Tecnologicos
Master Redes e Integracion de Sistemas
Curso Asterisk
Programa Formativo Utilizando los Principios de
ITIL: Como Definir e Implementar una Base de
Datos de la Configuracion - CMDB
Curso Tecnico en Implantacion de Sistemas de
Gestion de Seguridad de la Informacion segun la
ISO/IEC 27001 en la Empresa
Curso Programacion Android
Curso Desarrollo de Aplicaciones para Moviles
Curso Redes Informaticas
Master Consultoria SAP Online
Laura Paul Sakura Edgardo Jhossy
Programacin en Castellano on Facebook
5,974 people like Programacin en Castellano.
Like
Facebook social plugin
Artculo
Inicio Artculo Internet PHP
14
votar!
Uso de la clase PHPMailer
1 . Introduccin
2 . Qu es phpmailer?
3 . Por qu usar phpmailer?
4 . Pasos a seguir para usar phpmailer
5 . Ejemplo sencillo
6 . Ejemplo algo ms complicado
7 . Conclusiones y enlaces
Introduccin
El objeto de este escrito es presentar al lector la clase PHPMailer con la que podr realizar todas
aquellas cosas que nunca ha podido realizar con la funcion mail() de PHP.
En primer lugar se tratar de explicar qu es y las ventajas que ofrece PHPMailer, a continuacin
se describirn las propiedades y mtodos principales de esta clase. Para aclarar las posibles dudas
se expondrn dos ejemplos en los que se ver como enviar correo a travs de una cuenta
gratuita creada en hotpop.
Qu es phpmailer?
PHPMailer es una clase php para enviar emails basada en el componente active server ASPMail.
Permite de una forma sencilla tareas complejas como por ejemplo:
Enviar mensajes de correo con ficheros adjuntos (attachments)
enviar mensajes de correo en formato HTML
Con PHPMailer se pueden enviar emails via sendmail, PHP mail(), o con SMTP. Lo ms
recomendable es usando smtp por dos razones:
Con phpmailer se pueden usar varios servidores SMTP. Esto permite repartir la carga
entre varias computadoras, con lo que se podrn enviar un mayor nmero de mensajes
en un tiempo menor.
Adems los servidores SMTP permiten mensajes con mltimples to's (destinatarios), cc's
(Las direcciones que aparezcan en este campo recibirn el mensaje. Todos los
destinatarios vern las direcciones que aparecen en la seccin Cc), bcc's (Las direcciones
que aparezcan en el campo Bcc recibirn el mensaje. Sin embargo, ninguno de los
destinatarios podr ver las direcciones que fueron incluidas en la seccin Bcc) y Reply-tos
(direcciones de respuesta)
Por qu usar phpmailer?
Es posible enviar email con la funcion mail() de php, pero dicha funcin no permite algunas de
las ms populares caractersticas que proporcionan los clientes de correo usados actualmente.
Entre estas caractersticas se encuentran el envo de email con ficheros adjuntos.
PHPMailer hace fcil esta difcil tarea de enviar correos con estas caractersticas y puedes incluso
utilizar tu propio servidor smtp aunque ste requiera autenticacin (un nombre de usuario y
contrasea), con lo que se podr usar una cuenta gratuita de correo obtenida por ejemplo en
hotpop.
Pasos a seguir para usar phpmailer
Necesitamos el fichero class.phpmailer.php que es la clase PHPMailer propiamente
dicha y tambin el fichero class.smtp.php que nos permite el envo de emails a travs
de un servidor smtp.
El siguiente trozo de cdigo es necesario para instanciar desde nuestra pgina php a la
clase PHPMAiler. En la primera lnea incluimos el fichero class.phpmailer.php y en la
segunda creamos un objeto de la clase PHPMailer:
require("class.phpmailer.php");
$mail = new PHPMailer();
Una vez instanciado el objeto de la clase PHPMailer es necesario configuar sus
propiedades y llamar a sus mtodos. A continuacin enumero propiedades y mtodos
principales de la clase PHPMailer.
Propiedades:
Nombre Descripcin
Valor por
defecto
AltBody Establece el cuerpo del mensaje como slo de texto ""
Body
Establece el cuerpo del mensaje.Puede ser texto simple o
con formato HTMl. Si es con formato HTMl hay que
ejecutar el mtodo IsHTML(True)
""
ConfirmReadingTo
Establece la direccin de correo a la que se enviar una
Confirmacin de que el correo ha sido leido
""
ErrorInfo
Informa del error ms reciente producido al intentar enviar
un email
""
From Establece la direccin de correo de origen del Mensaje root@localhost
FromName Establece el nombre de quien enva el mensaje Root User
Host
Establece el servidor SMTP. Pueden ser varios separados
por ;
Localhost
Mailer
Establece el mtodo para enviar el mensaje puede ser mail,
senmail o smtp. Se recomienda usar smtp siempre que sea
posible
Mail
Password Establece la contrasea del servidor SMTP ""
ltimas
noticias
Oracle anuncia la
disponibilidad de MySQL 5.6
RC
BotDetect 3 ASP.NET
CAPTCHA
CAD Import VCL
Lanzada la versin 3.3.0
de Python
Ver ms
ltimos
artculos
Conectar con un
SQLServer en otro dominio:
va cdigo .Net.
Impersonacion.
BizTalk Server 2010 y EDI
para novatos
Conectar con un
SQLServer en otro dominio
Entity Framework Code
First (4)
Ver ms
ltimos
cdigos
MessageBox sencillo con
JQuery UI
Mascara para Text (SWT)
Convierte cursor de lectura
en cursor de escritura
Tres en Raya o Juego del
Gato
Ver ms
Buscar...
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a
objeto
Otros lenguajes
Plataformas
Teora
Varios
Targeted Email Delivery Immediate results with our lists Save 50% on your new order www.mail2zip.com
Encrypted Email Christian based Encrypted Email for individuals, churches and business www.EncryptFish.com
GREE Platform Beta Access Register Now to Grab The Developer SDK! gree.net/developers
Email SMTP Server Hosting Buy bulks email SMTP server in UK, USA, For best price call Now emailserver.sendbulkemailserver.com
Anuncios Google PHP Script Tutorial PHP HTML Correo Electronico Enviar Correo PHP
Anuncios Google
Envio De Correo En PHP
POP3 and SMTP Server
Crear Cuenta Hotmail
Anuncios Google
Correo Hotmail
Email PHP
Cuenta Correo
The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices
PluginDir
Establece el directorio donde estn incluidos los plugins de
phpmailer. Muy til para indicar el directorio en el que se
encuentra la clase SMTP
""
Port Establece el puerto por defecto del servidor SMTP 25
ReplyTo Establece todas las direcciones Reply-To Array()
SMTPAuth Establece la autentificacin SMTP False
Subject Establece el asunto del mensaje ""
Timeout Establece el timeout del servidor STMP en segundos 10
Username Establece el nombre de usuario SMTP ""
WordWrap
Establece el word Wrapping del cuerpo de un mensaje a
un nmero determinado de caracteres
0
Mtodos:
Nombre Sintaxis Descripcin
AddAddress
void AddAddress ( $address,
$name )
Aade una direccin de destino del
mensaje. El parmetro $name es opcional
AddAttachment
bool AddAttachment ( $path,
$name, [$encoding =
"base64"], [$type =
"application/octet-stream"] )
Aade un fichero adjunto al mensaje.
Retorna false si el fichero no pudo ser
encontrado.
$path, es la ruta del archivo puede ser
relativa al script php (no a la clase
PHPMailer) o una ruta absoluta. Se
aconseja usar rutas relativas
$name, nombre del fichero
$encoding, tipo de codificacin. Se
aconseja dejar la predeterminada
$type, el valor por defecto funciona con
cualquier clase de archivo. Se puede usar
un tipo especfico como por ejemplo
image/jpeg
AddBBC
void AddBCC ( $address, $name
)
Aade una direccin BCC.
AddCC
void AddCC ( $address, $name
)
Aade una direccin CC
AddReplyTo
void AddReplyTo ( $address,
$name )
Aade una direccin Reply-To
ClearAddresses void ClearAddresses ()
Borra todas las direcciones de destino
establecidas anteriormente
ClearAttachments void ClearAttachments ()
Borra todos los ficheros adjuntos
establecidos anteriormente
IsHTML void IsHTML ( $bool ) Establece el tipo de mensaje a HTML
Send bool Send ( )
Enva el mensaje, devuelve false si ha
habido algn problema. Consultando la
propiedad ErrorInfo se puede saber cul
ha sido el problema
Ejemplo sencillo
Esta primera aplicacin de ejemplo aplicacion1.zip va a estar formada por:
Una pgina principal llamada ejemplo.php
Un subdirectorio llamado includes donde estarn los ficheros class.phpmailer.php y
class.smtp.php
El objetivo de la aplicacin es mandar un mensaje de prueba mediante una cuenta de correo
gratuita de hotpop. As pues, el primer paso ser crear una cuenta en hotpop, como nombre
de usuario y password para dicha cuenta pondr por ejemplo micuenta y mipassword
respectivamente, al acabar de crear la cuenta nos dar la bienvenida y nos dir que el servidor
SMTP es smtp.hotpop.com. Por tanto, para enviar emails mediante phpmailer tendremos una
cuenta gratuita en http://www.hotpop.com con estas caractersticas:
SMTP Server: smtp.hotpop.com
Usuario: micuenta@HotPOP.com
Clave: mipassword
La direccion de destino a la que enviar el mensaje ser por ejemplo direccion@destino.com
Cdigo de ejemplo.php:
<?
// primero hay que incluir la clase phpmailer para poder instanciar
//un objeto de la misma
require "includes/class.phpmailer.php";
//instanciamos un objeto de la clase phpmailer al que llamamos
//por ejemplo mail
$mail = new phpmailer();
//Definimos las propiedades y llamamos a los mtodos
//correspondientes del objeto mail
//Con PluginDir le indicamos a la clase phpmailer donde se
//encuentra la clase smtp que como he comentado al principio de
//este ejemplo va a estar en el subdirectorio includes
$mail->PluginDir = "includes/";
//Con la propiedad Mailer le indicamos que vamos a usar un
//servidor smtp
$mail->Mailer = "smtp";
//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = "smtp.hotpop.com";
//Le indicamos que el servidor smtp requiere autenticacin
$mail->SMTPAuth = true;
//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = "micuenta@HotPOP.com";
$mail->Password = "mipassword";
//Indicamos cual es nuestra direccin de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = "micuenta@HotPOP.com";
$mail->FromName = "Eduardo Garcia";
The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
//una cuenta gratuita, por tanto lo pongo a 30
$mail->Timeout=30;
//Indicamos cual es la direccin de destino del correo
$mail->AddAddress("direccion@destino.com");
//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita
$mail->Subject = "Prueba de phpmailer";
$mail->Body = "<b>Mensaje de prueba mandado con phpmailer en formato html</b>";
//Definimos AltBody por si el destinatario del correo no admite email con formato html
$mail->AltBody = "Mensaje de prueba mandado con phpmailer en formato solo texto";
//se envia el mensaje, si no ha habido problemas
//la variable $exito tendra el valor true
$exito = $mail->Send();
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho
//para intentar enviar el mensaje, cada intento se hara 5 segundos despues
//del anterior, para ello se usa la funcion sleep
$intentos=1;
while ((!$exito) && ($intentos < 5)) {
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;
}


if(!$exito)
{
echo "Problemas enviando correo electrnico a ".$valor;
echo "<br/>".$mail->ErrorInfo;
}
else
{
echo "Mensaje enviado correctamente";
}
?>
Comentarios al ejemplo
Tres cosas a destacar:
Al usar un servidor smtp para el envo del mensaje es muy importante definir la propiedad
PluginDir que indica donde se encuentra el fichero class.smtp.php que contiene la clase SMTP,
en este caso se encuentra en el subdirectorio includes
El uso simultneo de las propiedades Body y AltBody. Se debe hacer cuando queremos mandar
un mensaje con formato Html ya que es posible que el destinatario acepte slo correos en
formato texto. Al definir las dos propiedades, Body y AltBody, no es necesario ejecutar el
mtodo IsHTML(True) cuando a Body se le asigna un mensaje en formato Html
La tercera y ms importante a tener en cuenta es el hecho de que el xito en el envio del mail
no depende slo de la clase PHPMailer sino que es vital el tiempo que el servidor smtp necesita
para autenticar al usuario as como el tiempo que tarda dicho servidor en enviar un correo.
Por tanto es fundamental proporcionarle al servidor el tiempo que le hace falta, ello se cosigue
de dos formas: Por un lado aumentando el valor de la propiedad Timeout pasando por ejemplo
de 10 a 30 segundos; Y por otro lado reintentando el envo del mensaje un nmero razonable
de veces (por ejemplo 5), dejando un tiempo de espera (por ejemplo 5 segundos), entre
cada intento.
Mediante la combinacin de estos 3 factores: Propiedad Tiemout, numero de intentos para
enviar el mensaje y tiempo de espera entre cada intento evitaremos los dos mensajes de error
ms frecuentes que nos puede dar la clase PHPMailer, relacionados con el tiempo que necesita
el servidor smtp para realizar su funcin, y que son:
SMTP Error: The following recipientes failed ......
SMTP Error: Could not authenticate
Ejemplo algo ms complicado
El objetivo de esta segunda aplicacin de ejemplo aplicacion2.zip va a ser enviar un correo
c o n un fichero adjunto a 2 direcciones de destino diferentes (al menos debe haber una
direccion de destino, el envio de un fichero adjunto ser opcional. Por simplificar no compruebo
que la sintaxis de las direcciones de correo introducidas en los campos de texto sea correcta).
Esta aplicacin va a estar formada por:
Una pgina principal llamada ejemplo2.php
Un subdirectorio llamado includes donde estarn los ficheros class.phpmailer.php y
class.smtp.php
En la pgina principal ejemplo2.php vamos a tener un formulario como el que se ve a
continuacin
Direccion de destino1:
Direccion de destino2:
Fichero adjunto:
No file selected Choose File
Enviar
Para poder enviar el fichero adjunto vamos a emplear en el formulario una etiqueta INPUT de
tipo FILE que es soportada por Netscape Navigator 2.0 en adelante e Internet Explorer 4.0 en
adelante. Para que funcione es necesario:
Que el formulario use el mtodo post
Que el atributo enctype tenga el valor multipart/form-data
Adems al formulario hay que aadirle un campo oculto de nombre MAX_FILE_SIZE, al
cul le daremos el valor en bytes del tamao mximo del archivo a descargar. Dado que
voy a emplear la cuenta gratuita de hotpop empleada en el ejemplo anterior y dicha
cuenta no permite enviar mensajes de ms de 500kb voy a limitar a 300kb (307200
bytes) el tamao mximo del archivo.
Cdigo de ejemplo2.php:
The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices
<?
//Es necesario que al menos halla una direccin de destino
$error="";
if ($enviar) {
if ((!$email1) && (!$email2)) {
$error.="Debe indicar al menos una direccin de destino";
}
}
if ($enviar && !$error) {
//creamos un array que estar formado por las direcciones de destino
if ($email1) {
$direcciones["direccion1"]=$email1;
}
if ($email2) {
$direcciones["direccion2"]=$email2;
}
//pasamos a enviar el correo
// primero hay que incluir la clase phpmailer para poder instanciar
//un objeto de la misma
require "includes/class.phpmailer.php";
//instanciamos un objeto de la clase phpmailer al que llamamos
//por ejemplo mail
$mail = new phpmailer();
//Definimos las propiedades y llamamos a los mtodos
//correspondientes del objeto mail
//Con PluginDir le indicamos a la clase phpmailer donde se
//encuentra la clase smtp que como he comentado al principio de
//este ejemplo va a estar en el subdirectorio includes
$mail->PluginDir = "includes/";
//Con la propiedad Mailer le indicamos que vamos a usar un
//servidor smtp
$mail->Mailer = "smtp";
//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = "smtp.hotpop.com";

//Le indicamos que el servidor smtp requiere autenticacin
$mail->SMTPAuth = true;
//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = "micuentaf@HotPOP.com";
$mail->Password = "mipassword";

//Indicamos cual es nuestra direccin de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = "micuenta@HotPOP.com";
$mail->FromName = "Eduardo Garcia";
//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita
$mail->Subject = "Prueba de phpmailer";
$mail->Body = "<b>Mensaje de prueba mandado con phpmailer en formato html</b>";
//Definimos AltBody por si el destinatario del correo no admite
//email con formato html
$mail->AltBody ="Mensaje de prueba mandado con phpmailer en formato texto";
//el valor por defecto 10 de Timeout es un poco escaso dado que voy a usar
//una cuenta gratuita y voy a usar attachments, por tanto lo pongo a 120
$mail->Timeout=120;
//Indicamos el fichero a adjuntar si el usuario seleccion uno en el formulario
if ($achivo !="none") {
$mail->AddAttachment($archivo,$archivo_name);
}
//Indicamos cuales son las direcciones de destino del correo y enviamos
//los mensajes
reset($direcciones);
while (list($clave, $valor)=each($direcciones)) {
$mail->AddAddress($valor);
//se envia el mensaje, si no ha habido problemas la variable $success
//tendra el valor true
$exito = $mail->Send();
//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas
//como mucho para intentar enviar el mensaje, cada intento se hara 5 s
//segundos despues del anterior, para ello se usa la funcion sleep
$intentos=1;
while((!$exito)&&($intentos<5)&&($mail->ErrorInfo!="SMTP Error: Data not accepted")){
sleep(5);
//echo $mail->ErrorInfo;
$exito = $mail->Send();
$intentos=$intentos+1;
}
The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices
//La clase phpmailer tiene un pequeo bug y es que cuando envia un mail con
//attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
//valor no debe confundirnos ya que el mensaje ha sido enviado correctamente
if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
$exito=true;
}

if(!$exito)
{
echo "Problemas enviando correo electrnico a ".$valor;
echo "<br/>".$mail->ErrorInfo;
}
else
{
//Mostramos un mensaje indicando las direccion de
//destino y fichero adjunto enviado en el mensaje
$mensaje="<p>Has enviado un mensaje a:<br/>";
$mensaje.=$valor." ";
if ($archivo !="none") {
$mensaje.="Con un fichero adjunto llamado ".$archivo_name;
}
$mensaje.="</p>";
echo $mensaje;
}
// Borro las direcciones de destino establecidas anteriormente
$mail->ClearAddresses();
}
echo "<a href='$PHP_SELF'> VOLVER AL FORMULARIO</a>";
}
else {
?>
<HTML>
<BODY>
<? If ($error) echo "<font color='red'>$error</font>";?>
<FORM ENCTYPE="multipart/form-data" METHOD="post" ACTION="<?=$PHP_SELF?>">
<TABLE BORDER=0 ALIGN="CENTER">
<TR>
<TD>Direccion de destino1:</TD>
<TD><INPUT TYPE="text" NAME="email1" MAXLENGTH="30" SIZE="35"></TD>
</TR>
<TD>Direccion de destino2:</TD>
<TD><INPUT TYPE="text" NAME="email2" MAXLENGTH="35" SIZE="35"></TD>
</TR>
<TD>Fichero adjunto:</TD>
<input type="hidden" name="MAX_FILE_SIZE" value="307200">
<TD><INPUT TYPE="file" NAME="archivo" SIZE="35"></TD>
</TR>
<TR>
<TD COLSPAN="2" ALIGN="CENTER"><INPUT TYPE="submit" VALUE="Enviar" name="enviar"></TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
<?
}
?>
Comentarios al ejemplo 2
En el caso de que halla dos direcciones de destino, en lugar de aadir las dos direcciones a la
vez mediante llamadas consecutivas al mtodo AddAddresses lo que hago es enviar uno a uno
cada correo:
Introduzco las direcciones de destino en un array llamado direccines
Aado la primera direccin incluida en ese array con el mtodo AddAddresses
Intento enviar el mensaje, muestro en pantalla si el mensaje ha podido ser enviado
correctamente o no
borro la direccin anteriormente aadida con el mtodo ClearAddresses
Aado la siguiente direccin incluida en el array direcciones con el mtodo
AddAddresses
Intento enviar el mensaje, muestro en pantalla si el mensaje ha podido ser enviado
correctamente o no
La ventaja de hacerlo uno a uno y no los dos a la vez es que tengo un mayor control sobre los
posibles errores que puedan suceder, identificando en cada momento a qu direccion se le ha
podido enviar el mail y a cul no
Aumento el Timeout a 120 ya que enviar un fichero adjunto requiere ms tiempo que enviar
un mensaje corto
Quiz lo que llame ms la atencin es el trato que he dado al error SMTP Error: Data not
accepted. Dicho error aparece siempre que enviamos un fichero adjunto pero no debe
incomodarnos ya que el mensaje llega perfectamente, se trata de un bug de la clase PHPMailer
y como tal hay que tratarlo, es decir, si aparece ese error no lo tendremos en cuenta.
Conclusiones y enlaces
Como se ha podido observar en los dos ejemplos anteriores con PHPMailer es posible el envo de
un email tan complejo o tan simple como se quiera. Hemos visto los 3 errores ms frecuentes
que se pueden dar al usar la clase phpmailer:
SMTP Error: The following recipientes failed ......
SMTP Error: Could not authenticate
SMTP Error: Data not accepted
La solucion a los 2 primeros es la que ya apunt en Comentarios al ejemplo, y se trata de
buscar la mejor combinacin de los factores Timeout, numero de intentos para enviar el
mensaje e intervalo de tiempo entre cada intento. Los valores que he utilizado son orientativos
no deben tomarse al pie de la letra ya que para realizar los ejemplos me pareca adecuado usar
una cuenta gratuita obtenida en la Web, pero el lector seguramente usar una cuenta que le
halla proporcionado su proveedor de Internet y dicha cuenta puede requerir unos valores para
The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices
Comentarios
esos factores que coincidan o no con los que yo he propuesto, tambin depender del uso que
quiera dar a la cuenta, no es lo mismo si la va a usar para enviar correos con formato slo texto
a pocos destinatarios que si quiere enviar correos con ficheros adjuntos a muchos destinatarios.
La solucin al tercero es la ya apuntada en Comentarios al ejemplo 2, es decir, ignorar dicho
error porque el mensaje llega correctamente.
He comentado los aspectos ms importantes de la clase PHPMailer, para una mayor informacin
sugiero consultar la web de los creadores de esta estupenda clase.
Publicado por:
luca bustamante
Recomendar
a un amigo
Compartir
en redes


Axel dice:
Ya que soy nuevo en sto quiero saber cmo montarlo para poder enviar boletines de noticias
10/06/2010, a las 12:19:46
Axel dice:
Ya que soy nuevo en sto quiero saber cmo montarlo para poder enviar boletines de noticias
10/06/2010, a las 12:09:42
Copyright 1998-2011 Programacin en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad
Diseo web y desarrollo web. Un proyecto de los hermanos Carrero.
Red internet: Juegos gratis | Servidores dedicados
Ms internet: Password | Directorio de weblogs | Favicon
6 comments

javier misat (signed in using Hotmail)
---
Reply Like July 19 at 4:27pm
Rai Singh Valdivia, Chile
El link al ejemplo en.zip no est disponible.
The file was converted using http://www.convertapi.com Please purchase credits to remove this text http://www.convertapi.com/prices