Enviar mail con cónsulta mysql.

Tengo la siguiente situación: Necesito crear un bat que envíe correo de una consulta mysql, el correo lo puedo enviar sin problemas, sin embargo no logro que mi consulta mysql generada se envíe como mensaje del correo y no como archivo adjunto en un txt! He intentado crear un txt con la consulta y después leerlo e irlo guardando en una variable pero me toma solo una linea, también trate de darle la salida de la consulta a una variable en lugar de un txt pero me guarda literal la instrucción mas no el resultado.

1 Respuesta

Respuesta
1

A ver si te he entendido bien.

Quieres enviar por correo el resultado de una consulta mysql de modo que sea el cuerpo del mensaje y no un archivo adjunto. Sabes como enviar un mensaje de correo desde un bat pero no consigues que el cuerpo del mensaje enviado sea, precisamente, el resultado de la consulta. Si sabes como enviar un mensaje de correo con un texto de tu elección creo que podré ayudarte a integrar en ese mensaje el texto del resultado de la consulta. En todo caso puedo intentar ayudarte, una vez que tenga claro lo que necesitas. Ponme un ejemplo del mensaje de correo que querrías generar y cuéntame como haces para generar el mensaje de correo.

Exacto!! Eso es lo que necesito. BIen, la consulta mysql la genero así:

mysql -t -u usuariobasededatos -ppasswordbasededatos nombrebasededatos < consulta.sql > sobfal.txt

Como puede ver la consulta en si, la tomo de el archivo consulta.sql que tiene lo siguiente:

SELECT recibos.Folio, recibos.Periodo, recibos.Origen, recibos.BL, excepciones.Codigo, excepciones.Frescura, excepciones.Sobrante, excepciones.Faltante FROM recibos INNER JOIN excepciones on recibos.Folio=excepciones.folio WHERE CAST(recibos.Fechahr as DATE)=date(date(now())-1) && (excepciones.Faltante!=0 || excepciones.Sobrante!=0);

y el resultado me lo guarda por ahora en un archivo llamado sobfal.txt; que es lo que necesito que vaya en el cuerpo del mensaje. Lo que genera esta consulta es algo así:

http://localhost/consulta.jpg

Ahora el correo lo envío de la siguiente forma:

sendEmail -s smtp.gmail.com:587 -f [email protected] -u "Asunto" -m "Cuerpo del mensaje" -t [email protected] -xu [email protected] -xp password 

Perdón creo que no se ve la imagen de lo que genera la consulta y se guarda en sobfal.txt, es algo así:

+-------+---------+----------------------+--------+---------+------------+------------+-----------+
| Folio | Periodo | Origen | BL | Código | Frescura | Sobrante | Faltante |
+-------+---------+----------------------+--------+---------+------------+------------+-----------+
| 158 | 4 | MX06 DHL GDL | csacac | 15455 | 5454582 | 0 | 6 |
| 158 | 4 | MX06 DHL GDL | csacac | 44564 | 5454545 | 107 | 0 |
+-------+---------+----------------------+--------+---------+------------+------------+-----------+

Me he descargado el SendEmail de http://caspian.dotconf.net/menu/Software/SendEmail/ .

He hecho pruebas y parece funcionar correctamente. Para incluir el archivo sobfal.txt como cuerpo del mensaje creo que debes poner

-o message-file=sobfal.txt

En lugar de

-M "Cuerpo del mensaje"

Tal como se sugiere en la página indicada en la última línea del apartado "Required".

Mira a ver si esto te resuelve el problema. Si no es así dime como deberíamos seguir.

Muchísimas gracias, justamente funciona así, sin embargo el contenido del txt lo muestra desalineado y estéticamente no se ve muy bien que digamos en el correo que se recibe. Así que mi solución fue enviar la consulta por correo mediante un archivo php, dicho archivo php lo llamo desde un bat que se ejecuta diariamente a cierta hora y así me envía el correo automáticamente.

Muchísimas Gracias!!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas