Archivo para enero, 2011

Enviar correo electrónico con PHP – PHPMailer

Si, alguna vez necesitamos enviar un correo electrónico con PHP, gracias a la recomendación de http://twitter/ivonsue conocí una librería de PHP, llamada PHPMailer; la cual facilita en definitivo el envió de email con PHP; entre sus características tenemos:

  • La opción de enviar datos adjuntos.
  • Elegir Servidor SMTP.
  • Tipo de Seguridad SMTP.
  • Cuerpo del mensaje personalizado con HTML.
  • Cuenta a la que se responderá el email.
  • etc…

En fin, sus bondades son muchas, pasemos a lo que nos importa.

Crear pagina PHP que envié correo utilizando una cuenta de terra.com.mx

1.- Nos creamos una cuenta en terra.com.mx especialmente para enviar correos desde allí.

2.- Bajamos la librería de PHPMailer de aqui

3.- Levantamos nuestro servidor ( en este caso utilizo XAMPP ).

4.- Creamos un archivo php con lo siguiente:

   1: <?php
   2:     require("class.phpmailer.php");
   3:     $mail             = new PHPMailer();
   4:     $mail->IsSMTP();
   5:     $mail->SMTPAuth   = true;
   6:     //$mail->SMTPSecure = "ssl";
   7:     $mail->Host       = "smtp.terra.com.mx";
   8:     $mail->Port       = 587;
   9:     $mail->Username   = 'micorreodeterra@terra.com.mx';
  10:     $mail->Password   = "myPassWord";
  11:     //>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  12:     //====== DE QUIEN ES ========
  13:     $mail->From       = "micorreodeterra@terra.com.mx";
  14:     $mail->FromName   = "Mi Nombre";
  15:     $mail->AddAttachment("images/foto.jpg", "foto_regalo.jpg"); //Archivo adjunto
  16:     //====== PARA QUIEN =========
  17:     $mail->Subject    = "Test Mail";
  18:     $mail->AddAddress("juanscutiaa@terra.com.mx","Para ti juan");
  19:     $mail->AddAddress("albertinn@hotmail.com","Para ti alberto");
  20:     
  21:     //Cuerpo del mensaje
  22:     $mail->Body      = "HOLA ESTO ES UNA PRUEBA";
  23:     $mail->Send();
  24: ?>

5.- Colocamos nuestro archivo php en la misma carpeta que los archivos class.phpmailer.php y class.smtp.php que descargamos de la pagina de phpMailer.

image

6.- Para probar nuestra pagina basta con abrir nuestro explorador e ingresar la dirección de nuestra pagina que acabamos de hacer.

«Por ultimo me gustaría explicar un poco el código de la pagina para no dejar alguna duda, a mi parecer es bastante sencillo pero quien sabe 😉 »

En la línea:

   1: require("class.phpmailer.php");

Simplemente “importamos” los métodos necesarios de la clase phpmailer

 

En la línea:

   1: $mail             = new PHPMailer();

Creamos un objetos de tipo PHPMailer, para poder interactuar con sus

métodos.

En las líneas:

   1: $mail->IsSMTP();
   2:     $mail->SMTPAuth   = true;
   3:     //$mail->SMTPSecure = "ssl";
   4:     $mail->Host       = "smtp.terra.com.mx";
   5:     $mail->Port       = 587;
   6:     $mail->Username   = 'micorreodeterra@terra.com.mx';
   7:     $mail->Password   = "myPassWord";

Configuramos el SMTP de terra.com.mx  😉 colocamos los datos de nuestra cuenta de terra.

En las líneas:

   1: //====== DE QUIEN ES ========
   2: $mail->From       = "micorreodeterra@terra.com.mx";
   3: $mail->FromName   = "Mi Nombre";
   4: $mail->AddAttachment("images/foto.jpg", "foto_regalo.jpg"); //Archivo adjunto
   5: //====== PARA QUIEN =========
   6: $mail->Subject    = "Test Mail";
   7: $mail->AddAddress("juanscutiaa@terra.com.mx","Para ti juan");
   8: $mail->AddAddress("albertinn@hotmail.com","Para ti alberto");

Configuramos departe de quien es el correo y si deseamos agregar algun archivo adjunto como en este caso una foto que se encuentra en la carpeta images, entonces haremos uso del método AddAttachment , de igual forma colocamos el Asunto del mensaje y los distintos destinatarios, si deseamos agregar mas destinarios simplemente lo hacemos con el método AddAddress.

Ya por ultimo en las líneas:

   1: //Cuerpo del mensaje
   2:     $mail->Body      = "HOLA ESTO ES UNA PRUEBA";
   3:     $mail->Send();

Escribimos el cuerpo del mensaje –>Body y enviamos el correo con –> Send()

Si desean tener una mayor seguridad de que el correo se envió correctamente pueden agregar una condición de la siguiente forma:

   1:  
   2: if($mail->Send()) {
   3: echo "Mensaje enviado correctamente";
   4: } else {
   5: echo "Error al enviar mensaje: " . $mail->ErrorInfo;
   6: }

Si todo sale correctamente ustedes verían el correo algo similar a esto:

image

*Es muy importante tomar en cuenta que este ejemplo es inseguro ya que al dejar en “texto plano” la contraseña de la cuenta, esta podría ser leída con facilidad.

Gracias Sue 🙂

Descargar archivos fuentes

 

Update: 21-Marzo-2011

Si desean agregar un mensaje que acompañe el mail, basta con agregar las siguientes líneas:

   1: $htmlBody = "<html><head><title>HTML Email</title></head><body>
<br /><h2>Titulo</h2><p>Esto es un link
<a href=\https://darkchicles.wordpress.com\
title=\"Blog darkchicles\">Da clic para visitar el blog</a>
Tu puedes colocar etiquetas html como lo quieras</p>"
;

   2:  

   3:    $mail->Body=$htmlBody;

   4:    $mail->isHTML(true);

Body, es el cuerpo del mail, allí podremos ocupar código html.

 

Mas info:

Uso de la clase PHPMailer

PHP Mailer Tutorial (en ingles)

Enviar email con PHPMailer utilizando tu cuenta de Gmail

Otro ejemplo para enviar correos con PHPMailes desde tu propio smtp

Configurar Outlook 2007 con cuenta de hotmail

PHPM@iler: http://phpmailer.worxware.com/

Anuncios

Cifrar password con javascript

La  seguridad en nuestras aplicaciones web es esencial, por lo que almacenar un registro con el campo de contraseña en texto plano es una debilidad en nuestro sistema.

Para cifrar nuestros passwords podemos usar “algoritmos de cifrado no reversibles” como es md5 o SHA-1 , los lenguajes de programación tiene funciones predefinidas, como:

1295149174_application-pgp-signature

 

PHP –> SHA1 | MD5

JAVA –> SHA1 | MD5

 

 

Todas estas funciones se ejecutan del lado del servidor, pero que pasa si necesitamos cifrar el password del lado del cliente. Pues para eso podemos utilizar una función en JavaScript para cifrar.

Utilizaremos una librería de JavaScript ( ojo: es “BSD License” )  y aunque esta en su modo Beta, funciona bastante bien, la podemos descargar de aqui .

Para nuestro ejemplo primero, descargaremos el archivo que contiene las funciones en JavaScript  (carpeta: jshash-2.2) enseguida crearemos un archivo HTML de la siguiente forma:

   1: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

   2: <html xmlns="http://www.w3.org/1999/xhtml">

   3: <head>

   4: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

   5: <title>Documento sin título</title>

   6: </head>

   7: <script src="jshash-2.2/sha1.js" type="text/javascript"></script>

   8:  

   9:  

  10: <body>

  11: <form id="form1" name="form1" method="post" action="">

  12:   <p>

  13:     <label for="Password"></label>

  14:     Password Natural:

  15:     <input type="text" name="Password" id="Password" />

  16:     <input type="button" name="encripta" id="encripta" value="Encripta" onClick="psw_pass.value = hex_sha1(Password.value);" />

  17:   </p>

  18:   <p>Password Encript:

  19:     <label for="psw_pass"></label>

  20:     <input type="text" name="psw_pass" id="psw_pass" />

  21:   </p>

  22: </form>

  23: </body>

  24: </html>

Como podemos observar que incluimos la librería sha1.js

   1: <script src="jshash-2.2/sha1.js" type="text/javascript"></script>

La forma de utilizarlo es:

   1: onClick="psw_pass.value = hex_sha1(Password.value);"

Así de fácil 🙂 , pero para que quede mas claro dejo los archivos fuentes:

Archivo_zipDescargar

 

Fuente:

http://pajhome.org.uk/crypt/md5

Unos post divertidos sobre C# en Visual Studio:

http://developersdotnet.com/blogs/marcos/archive/2007/06/05/criptograf-237-a-algoritmos-asim-233-tricos.aspx

Días Hábiles con Java ( Quitar sábados y domingos )

Este es un ejemplo muy sencillo para calcular cuantos días hábiles existen entre un rango de fechas:

   1: <%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
   2: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   3: <%@ page import="java.util.Calendar"%>
   4: <%@ page import="java.util.Date" %>
   5: <%@ page import="java.util.GregorianCalendar"%>
   6: <html xmlns="http://www.w3.org/1999/xhtml">
   7: <head>
   8: <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   9: <title>Documento sin t&iacute;tulo</title>
  10: </head>
  11:  
  12: <body>
  13: <%
  14: /**
  15:      * 
  16:      * @param fechaInicial
  17:      * @param fechaFinal
  18:      * @return dias habiles
  19: */
  20: //public int getDiasHabiles(Calendar fechaInicial, Calendar fechaFinal) {
  21: Calendar fechaInicial = new GregorianCalendar(2011,1-1,01);
  22: Calendar fechaFinal= new GregorianCalendar(2011,1-1,31);
  23:  
  24:         int diffDays= 0;
  25:  
  26:     //mientras la fecha inicial sea menor o igual que la fecha final se cuentan los dias
  27:     while (fechaInicial.before(fechaFinal) || fechaInicial.equals(fechaFinal)) {
  28:  
  29:                 //si el dia de la semana de la fecha minima es diferente de sabado o domingo
  30:                 if (fechaInicial.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY && fechaInicial.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) {
  31:                     //se aumentan los dias de diferencia entre min y max
  32:                     diffDays++;
  33:                 }
  34:                 //se suma 1 dia para hacer la validacion del siguiente dia.
  35:                 fechaInicial.add(Calendar.DATE, 1);
  36:  
  37:             }
  38:  
  39:        //   return diffDays;
  40:         out.print(diffDays);
  41:  
  42: //    }
  43: %>
  44: </body>
  45: </html>

 

Descarga el código:

imageDescarga

Fuente:

http://godieboy.com/2010/10/obtener-dias-habiles-entre-2-fechas-en-java.html

Mas recursos:

http://www.bit-net.org/java/ud6.html

http://rnt.sectur.gob.mx/rnt/interno/verificacion/DiasHabiles.java

Ignorar tildes en consultas con PostgreSQL

image

Pues hace tiempo ya…, se suscitó el problema que en los formularios de búsqueda del sistema no aparecían los resultados cuando escribías el nombre del cliente “Juan Apostol” , y esto era por que en la base de datos estaba registrado como “Juan Apóstol” ( Nótese esa pequeña cosa llamada “Tilde” arriba de la letra o ).

Para darle solución a este problema se modifico la consulta de búsqueda, de la siguiente forma:

Antes:

SELECT CAT_CLIENTES.NOMBRE LIKE ‘%"+variable+"%’ ORDER BY CAT_CLIENTES.NOMBRE ASC

Después:

SELECT TO_ASCII(CAT_CLIENTES.NOMBRE, ‘LATIN1’) LIKE ‘%"+variable+"%’ ORDER BY CAT_CLIENTES.NOMBRE ASC

Con la sencilla función TO_ASCII aplicada sobre el campo NOMBRE, tendrá el efecto de que los resultados traídos por la consulta no tomaran en cuenta si el registro tiene o no tilde.

Por lo que si ahora buscamos “Juan Apostol” nos traerá de resultado “Juan Apóstol” aunque no lo hallamos escrito con su acento correspondiente.

 

¿Necesitas otra opción?

http://romanmussi.blogspot.com/2009/12/busquedas-por-campos-de-texto-en.html

¿Necesitas ayuda con Oracle?

Aquí otra solución con Oracle. (via @ivonsue)

 

PD.-Gracias al amigo Rodre por buscar esta solución.

Nube de etiquetas