jueves, 23 de noviembre de 2017

PHP - Ejecutar un script al abrir un email


La idea es poder ejecutar automáticamente un script en PHP cuando alguien abre un email. Explicaré como hacerlo.

Esto puede resultar muy útil ya que nos permite poder hacer infinidades de cosas al momento de querer saber que pasó con el email que hemos enviado. Por ejemplo podriamos saber si fue abierto o no, cuantas veces fue leido, a que hora, desde que dirección IP, etc.
Que necesitamos?
  1. Saber algo de HTML.
  2. PHP, obiamente.
  3. Un servidor donde alojar nuestro archivo .php.
  4. Un sevidor de correo.
Si alguíen pensó en embeber un javascript os adelanto que no se puede ya que estas etiquetas no son ejecutadas por ningún cliente de correo (por lo menos no conozco ninguno que las ejecute si alguien conoce que avise) por medidas de seguridad.
Tampoco queremos que la persona tenga que hacer clic en nigún link ni nada por el estilo.
Pasos:

  1. Crear el archivo php que contenga el script a ejecutar. Ejemplo: creamos el archivo script.php con el siguiente contenido.
<?php

$asunto = "El email fue leido";
$mensaje = "El email que enviaste a tal persona fue mostrado en su pantalla";
mail("mi_correo@dominio.com", $asunto, $mensaje);
?>
  1. Posteriormente hay que crear un email con formato HTML desde un cliente de correo que permita hacerlo así y no con texto plano.
  2. Ahora viene lo fundamental para que se pueda ejecutar el script automáticamente, y básicamente consiste en poner en algún lado del email una etiquera de imágen que en lugar de referenciar una imagen, referencie un archivo .php. Generalmente los clientes de correos interpretan el HTML y muestran las imágenes referenciadas automáticamente. Con lo cual si nosotros referenciamos a un archivo PHP éste se ejecutará automáticamente sin necesidad de ninguna intervención por parte del receptor.
<HTML>
Hola Destinatario!
<img src="http://mi_servidor.com/script.php"/> </HTML>
Ahora solo resta enviar el email y que el destinatario lo abra. Cuando esto ocurra nuestro PHP se ejecutará. Obiamente que para que ésto funcione el destinatario debe leer el email con una pc que esté concectada a internet al momento de la apertura del correo.


Como última aclaración, cuando el el detinatario vea el correo, probablemente éste vea como una imagen que no se mostró(el cuadradito con la cruz roja).

Ésto lo solucionamos poniendo en nuestro script PHP que se ejecuta (primer ejemplo) en la última línea algo como esto:
<?php
header ("Location: http://www.mi_dominio.com/mi_imagen.jpg");
?>

No hay comentarios:

Publicar un comentario