Primero es necesario configurar el servidor para permitir enviar correos mediante SMTP, para esto necesitamos instalar el paquete SSMTP tecleando el siguiente comando en una terminal de ubuntu:

sudo apt install ssmtp

 Una vez finalizado la instalación procederemos a configurarlo, en la terminal tecleamos lo siguiente:

sudo nano /etc/ssmtp/ssmtp.conf

En este ejemplo se utilizará un correo de Gmail, por lo cual la configuración debe quedar de la siguiente manera:

[email protected]
mailhub=smtp.gmail.com:587
hostname=NOMBRE-DE-HOST
FromLineOverride=YES
[email protected]
AuthPass=CONTRASEÑA-CUENTA-GMAIL
UseTLS=YES
UseSTARTTLS=YES

Continuamos instalando Php para generar la instrucción, para esto tecleamos el siguiente comando:

sudo apt install php libapache2-mod-php php-mysql

Después de esto el servidor ya  estará configurado.
Ahora procedemos con la  creación del archivo que descargará los datos y enviará el correo, para esto tecleamos el siguiente comando:

sudo nano /etc/var/www/reporte1.php

y pegaremos el siguiente código:

<?php
//Variables
$fecha_hoy = date("Y-m-d");
$color = "#e4e4e4";
$hora_inicio = "06:00";
$hora_fin = "20:00";

//Información sobre base de datos
$host = "localhost";
$usuario = "openalpr";
$contrasena = "";
$base_datos = "openalpr";
$puerto = 3306;

//Conexión y consultas
$conexion = mysqli_connect($host,$usuario,$contrasena,$base_datos,$puerto);
$query = "select best_plate as 'placa', count(best_plate) as 'cantidad' from openalpr.front_alprgroup where epoch_time_end between adddate('".$fecha_hoy." ".$hora_inicio."', interval 7 hour) and adddate('".$fecha_hoy." ".$hora_fin."', interval 7 hour) group by best_plate";
$consulta = mysqli_query($conexion,$query);

//Armado del mensaje
$mensaje = "".
        "<h2>Reporte OpenALPR</h2>".
        "<table style='text-align:center; border:1px solid; border-spacing:0;'>".
                "<tr>".
                        "<td><b>PLACA</b></td>".
                        "<td><b>CANTIDAD</b></td>".
                "</tr>";
while($tabla = mysqli_fetch_array($consulta))
{
        $mensaje .= "".
                "<tr style='background:$color'>".
                        "<td style='padding:4px'>".$tabla["placa"]."</td>".
                        "<td style='padding:4px'>".$tabla["cantidad"]."</td>".
                "</tr>";
        if($color == "#e4e4e4")
        {
                $color = "#fff";
        }
        else
        {
                $color = "#e4e4e4";
        }
}

$mensaje .= "".
        "</table>";


//Información de contacto
$para = "[email protected]";
$de = "[email protected]";
$asunto = "Reporte OpenALPR";
$cabeceras = 'MIME-Version: 1.0'."\r\n";
$cabeceras .= 'Content-type: text/html; charset=utf-8'."\r\n";
$cabeceras .= "From:".$de;

//Envio de correo
mail($para,'=?UTF-8?B?'.base64_encode($asunto).'?=',$mensaje,$cabeceras);
echo "El correo fué enviado satisfactoriamente";
echo "\r\n";

Deben modificarse las horas de inicio y fin que tomará como rango de consulta para el reporte :

$hora_inicio = "06:00";
$hora_fin = "20:00";

También debe modificarse la linea del destino por en correo de la persona que recibirá el reporte.

$para = "[email protected]";

 y la linea del destinatario. Aquí debe ir la misma cuenta de correo del SMTP configurado previamente. 

$de = "[email protected]";


Ya casi todo está listo, sólo hace falta crear la tarea programada, para esto tecleamos el siguiente comando:

sudo crontab -e

y teclearemos la siguiente linea al final:

30 20 * * * /usr/bin/php /var/www/html/reporte1.php

30 20 * * * significa que enviara todos los días el reporte a las20:30 horas y ejecutará la función creada del archivo reporte1.php

El resultado sería el siguiente:

¿Encontró su respuesta?