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: