¿Cómo sé quién miró mi mensaje?

Anterior  Siguiente

 

El software no le indica cuando alguien miró su correo. En el protocolo y las especificaciones que rigen la comunicación del email no se establece un mecanismo para saber cuando un receptor ha leído el email que recibió y que el que lo envió se entere de ello.

 
Para efectos de estadística, no obstante, empresas han empleado una técnica que consiste en la incrustación de una imagen en el mensaje que cuando sea desplegada por el receptor mande la señal a una base de datos y quede registrado así que se ha visto el mensaje. Desde luego que ésta no es una técnica infalible y sobre todo considerando que ahora los visores de email por default no muestran las imágenes embebidas en el html sino hasta que el usuario así lo ordene oprimiendo un botón "mostrar imágenes".

 

 

Esa técnica se puede implementar mediante programación PHP por ejemplo, aquí mostramos cómo se hace.
 
Requerimientos: servidor web que soporte PHP y MySQL.
 
 
1.Crear una tabla de nombre "registros" en su base de datos que tendrá las columnas id, emailaddress y contador. 
 
# tabla_registros.sql

 
# código SQL que crea la tabla y sus columnas
 

CREATE TABLE `registros` (

  `id` int(8) NOT NULL auto_increment,

  `emailaddress` text NOT NULL,

  `contador` int(4) unsigned NOT NULL default '0',

  PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;

 

# insertamos dos registros en la tabla creada

 

INSERT INTO registros VALUES("1", "info@ejemplo.com", "0");

INSERT INTO registros VALUES("2", "info@ejemplo2.com", "0");

 

2. Subir el siguiente archivo a su servidor que se encarga de establecer los datos de conexión de su base de datos MySQL y es requerido por los siguientes archivos php.
 
<?

// datos_de_mysql.php

 
$db_host = 'HOST';

$db_user = 'USUARIO';

$db_pwd = 'PASSWORD';

$database = 'NOMRE_BASEDEDATOS';

$table = 'registros';

 

?>

 

3. Subir el siguiente archivo a su servidor que se encargará de mostrar una imagen y registrar qué email fue el que la invocó.
 
<?

// muestra_imagen_y_registra.php

 
// código para mostrar la imagen, aquí en vez de cuadrito.jpg 
// puede poner cualquier otra imagen que tenga, así que
// debe subir una imagen llamada cuadrito.jpg u otra a su server
 

Header( "Content-type: image/jpg");

$imagen_jpg = file_get_contents('cuadrito.jpg');

echo $imagen_jpg;

 

// código para incrementar el contador de un email que ha visto la imagen

 

include ("datos_de_mysql.php");

 

if (!mysql_connect($db_host, $db_user, $db_pwd))

    die("Can't connect to database");

 

if (!mysql_select_db($database))

    die("Can't select database");

 

 

$comandosql = mysql_query("UPDATE registros SET contador=contador+1 WHERE emailaddress='{$_GET['correo']}'");

if (!$comandosql) {

    die("Falló la inserción");

}

 

?> 
 
 
Ese sería todo el código fundamental para que funcione el sistema. Ahora ya puede registrar qué correo vió la imagen.
 

Simplemente poniendo un código como el siguiente en sus mensajes html que enviará. Donde dominio.com es el dominio donde ha subido sus archivos php.

 

 

<img src="http://dominio.com/muestra_imagen_y_registra.php?correo=#email#">
 
 
Esto funciona debido a que E-mail Marketing remplazará la cadena #email# por el email al que está siendo enviado el mensaje. Para efectos de pruebas puede poner:
 
 

<img src="http://dominio.com/muestra_imagen_y_registra.php?correo=info@ejemplo.com>

 

 

Y ahora mostramos otros archivos php que serán muy útiles.

 

1. Usted se preguntará cómo puede ver los emails que han visto su mensaje, bueno es mostrando su tabla que contiene su lista de emails y la columna contador donde se registra dicha información. El siguiente código le muestra los datos que existen en su tabla registros.
 
<?

//mostrar_tabla.php

 
include ("datos_de_mysql.php");

 

if (!mysql_connect($db_host, $db_user, $db_pwd))

    die("Can't connect to database");

 

if (!mysql_select_db($database))

    die("Can't select database");

 

 

$result = mysql_query("SELECT * FROM {$table}");

if (!$result) {

    die("Query to show fields from table failed");

}

 

$fields_num = mysql_num_fields($result);

 

echo "<h1>Tabla: {$table}</h1>";

echo "<table border='1'><tr>";

// printing table headers

for($i=0; $i<$fields_num; $i++)

{

    $field = mysql_fetch_field($result);

    echo "<td>{$field->name}</td>";

}

echo "</tr>\n";

// printing table rows

while($row = mysql_fetch_row($result))

{

    echo "<tr>";

 

    // $row is array... foreach( .. ) puts every element

    // of $row to $cell variable

    foreach($row as $cell)

        echo "<td>$cell</td>";

 

    echo "</tr>\n";

}

 
mysql_free_result($result);

 
?>

 

Otra manera de ver su tabla de datos es con programas como MySQL-Front ó HeidiSQL.
 
 
2. Como se podrá apreciar, es necesario que en su tabla tenga cargados los emails que piensa monitorizar. Es decir si usted tiene una lista de 20000 emails en E-mail Marketing, ya está listo para enviarlos y quiere registrar precisamente quien ha visto su mensaje, entonces esos 20000 emails deben ser cargados a su tabla de MySQL de modo que el script muestra_imagen_y_registra.php lo encuentre en la BD y así poder incrementar su contador.
 
Por ello hemos escrito el siguiente archivo .php que sirve para cargar una lista de emails a su tabla registros, se usa invocándolo así: agregar_lista_de_emails.php?lista=lista.txt donde lista.txt es cualquier archivo de texto que usted suba a su servidor y que contiene su lista de emails ya filtrada, un email por línea.

 

<?

//agregar_lista_de_emails.php
 

include ("datos_de_mysql.php");

 

if (!mysql_connect($db_host, $db_user, $db_pwd))

    die("Can't connect to database");

 

if (!mysql_select_db($database))

    die("Can't select database");

 

 

       $handle = @fopen($_GET['lista'], "r");

if ($handle) {

    while (!feof($handle)) {

        $buffer = fgets($handle);

        

$comandosql = mysql_query("INSERT INTO registros (id, emailaddress, contador) VALUES (NULL, '{$buffer}', 0)");

if (!$comandosql) {

    die("Falló la inserción");

}

 

    }

 

    fclose($handle);

       echo "ok, se insertaron los registros.";

}else{

 

die("no se pudo abrir el archivo especificado.");

}

 

?> 

 

 

3. Finalmente mostramos otro archivo .php que sirve para borrar todos los registros de su tabla registros. Por ejemplo usted ya terminó de monitorizar su campaña y va por otra entonces borra todo el contenido de su tabla actual para así quede vacía y pueda cargar nuevos correos.

 

<?

//borrar_registros_de_la_tabla.php
 

include ("datos_de_mysql.php");

 

if (!mysql_connect($db_host, $db_user, $db_pwd))

    die("Can't connect to database");

 

if (!mysql_select_db($database))

    die("Can't select database");

 

 

$result = mysql_query("TRUNCATE TABLE registros;");

if (!$result) {

    die("mission failed!");

}

else{

echo "ok, todos los registros de la tabla {$table} fueron borrados.";

}

 

?>