April 29 2008

Emulando listas de correo con php de forma rápida y sencilla

Aclaración: Enviar correo de forma masiva e indsicriminda es SPAM, no importa como lo quieras justificar, es SPAM, por favor asegurate de que las personas a las que les envíes este tipo de información, esten plenamente conscientes de lo que están recibiendo. Licencia Creativa, ni su autor, ni su administrador se hacen responsables por el mal uso que se haga de esta información

Si tenemos un servidor de correo plenamente instalado, a veces es algo tedioso y fastidioso estar configurando software de listas de correos, aunque existe software muy bueno para ello, hoy vamos a ver una forma sencilla en como podemos ahorrarnos ese paso y utilizar una cuenta de correo común y corriente para esos fines.

¿Qué necesitamos?

  1. PHP a nivel muy básico
  2. Un archivo de texto simple en el que escribiremos los datos de nuestros usuarios en la forma nombre, correo
  3. Por supuesto, la lista de nuestros usuarios
  4. Una cuenta de correo real

Preparando el archivo de texto

Hagamos un archivo de texto simple (.txt) y lo nombramos como lista.txt, en ella escribiremos los nombres de nuestra lista en la siguiente manera:

Nombre real de la persona, correo electrónico

Debemos asegurarnos de escribir un usuario por línea de texto

Tecleemos algo de código

Inicie su editor de código favorito, generamos un documento html nuevo y empecemos a escribir código. Lo primero, será abrir el archivo de texto (recuerde tener privilegios adecuados para esto) y pasarlo a una matriz, lo haremos con la función file de php

PHP:
  1. $lines = file('lista.txt');

Vamos a agregrar una linda tabla con los datos que vayamos extrayendo de la lista, de esa manera podremos ver un output al momento que los datos se van enviando. Y mostraremos todo esto dentro de un foreach

PHP:
  1. <table>
  2. <tr>
  3. <td>Nombre</td><td>Correo</td><td>Enviado</td></tr>
  4. <?php
  5.         foreach ($lines as $line_num=>$line) {
  6.             $datos = explode(",", $line);
  7.     ?>     
  8.     <tr>
  9.     <td> <?php echo $datos[0] ?></td>
  10.     <td> <?php echo $datos[1] ?></td>
  11.         <td>Ok</td>

Notemos que la variable datos contiene ahora los datos de cada usuario en forma de array, de manera que la opsición 0 contiene el nombre, y la posición 1 el correo electrónico, la función explode nos permite hacer dicha separación. Ahora, enviaremos los datos por correo, vuelvo a hacer incapie en la necesidad de usar una cuenta de correo valida para que funcione mejor, esto por supuesto, no garantiza que cada cliente de correo interprete nuestro mensaje como spam o no.

PHP:
  1. <?php
  2.         $sendTo = $datos[1]; // El correo del usuario
  3.         $correo_de = "lista@aullamas.com"; // nuestro correo
  4.         $de = "Aoyama"; // Nuestro nombre
  5.         $subject = "Bienvenida a la lista de correo de Licencia Creativa";
  6.         $headers = "MIME-Version: 1.0\n";
  7.         // Importante que el mime sea text/html para que el cliente lo entienda como tal
  8.         $headers .= "Content-type: text/html; charset=iso-8859-1\n";
  9.         $headers .= "From: $de  <$correo_de> \r\n";
  10.         $headers .= "Reply-To: " . $correo_de;
  11.         $message = "<p><img src='http://www.dominio.com/images/imagen.jpg' /></p><p>Como vez, puedes incluir im&aacute;genes tanbi&eacute;n. Y no olvides enviar esta informaci&oacute;n a todos tus amigos y conocidos.</p><p><small>Este es un correo automatizado. No es necesario que respondas al mismo, si deseas mayor informaci&oacute;n escribe a: aoyama@auyamas.com</small></p>";
  12.     mail ($sendTo, $subject, $message, $headers); //la famosa función mail de php hace el envio
  13.     ?>
  14.     </tr>
  15.     <?php     
  16.     } //fin foreach
  17.     ?>
  18.     </table>

Una vez terminado el código, guardemos este documento en una carpeta dentro de nuestra raíz de publicación y lo ejecutamos cuando sea necesario. Finalmente quiero decir que esto es algo muy simple y que hay software que hace ese trabajo de manera más eficiente, también reitero de nuevo la necesidad de no abusar de este tipo de prácticas.

October 26 2007

Capturar la IP real del usuario en PHP

En muchas de nuestras aplicaciones, nos veremos obligados o necesitados de capturar la ip de nuestros usuario, por ejemplo, para fines estadísticos, para alimentar la paranoia de nuestro jefe y / o cliente, etc. Así que la forma de capturar la ip sería:

PHP:
  1. $ip = $_SERVER["REMOTE_ADDR"];

Pero, por supuesto, este dato puede verse falseado por el uso de proxies y trucos similares para enmascarar la ip, así que hagamos una función php que nos devuelva la ip real del usuario

PHP:
  1. function ipreal()
  2. {
  3.     if ($_SERVER)
  4.     {
  5.         if ($_SERVER[HTTP_X_FORWARDED_FOR])
  6.             $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  7.         else
  8.             if ( $_SERVER["HTTP_CLIENT_IP"] )
  9.                 $ip = $_SERVER["HTTP_CLIENT_IP"];
  10.             else
  11.                 $ip = $_SERVER["REMOTE_ADDR"];
  12.     }
  13.     else
  14.     {
  15.         if ( getenv( "HTTP_X_FORWARDED_FOR" ) )
  16.             $ip = getenv( "HTTP_X_FORWARDED_FOR" );
  17.         else
  18.             if ( getenv( "HTTP_CLIENT_IP" ) )
  19.                 $ip = getenv( "HTTP_CLIENT_IP" );
  20.             else
  21.                 $ip = getenv( "REMOTE_ADDR" );
  22.     }
  23.     return $ip;
  24. }

Que se utilizaría así

PHP:
  1. echo ipreal();

O así

PHP:
  1. $ip = ipreal();

RSS