Obtenga cron para enviar correos electrónicos con formato html


10

Tengo un programa de estadísticas que se ejecuta en archivos de registro a través de cron. El programa de estadísticas puede generar HTML.

En este momento confío en el mecanismo MAIL_TO en el crontab.

MAILTO=my@email.addr
55 23 * * * /usr/bin/htmlstats

El problema es que quiero que el correo electrónico enviado se muestre como HTML y no como texto sin formato.

Cron coloca el siguiente encabezado en el correo electrónico:

Content-Type: text/plain; charset="UTF-8"

Alguna idea de cómo cambiaría esto a:

Content-Type: text/html; charset="UTF-8"

Respuestas:


3

No creo que puedas. Una solución podría ser canalizar la salida a sendmail o mail, lo que le da más control sobre el tipo de contenido y otros encabezados.


Gracias. Le di una vuelta al correo y estoy contento con lo que estoy viendo. ¡Todo lo mejor!
Mark L el

La CONTENT_TYPEsolución variable mencionada en otra respuesta parece funcionar al menos en algunas versiones cron.
Peter Eisentraut

22

Puedo poner el CONTENT_TYPE="text/plain; charset=utf-8"de /etc/crontabtener mi correo en UTF-8.

Poner CONTENT_TYPE="text/html; charset=utf-8"en /etc/crontabenviar el correo en HTML.

Puede agregarlo en un archivo específico si el directorio /etc/cron.d/existe. En este caso, la especificación se define solo para las tareas solicitadas.


1
Esto es increíble ... puedo confirmar que funciona en Ubuntu 14.04.2.
billynoah

@billynoah sí, esta debería ser la respuesta aceptada. Funciona en archlinux
cronie

trabajó en centos
zzapper

Funciona en Ubuntu 16
Marco Marsala

No parece funcionar en macOS Mojave.
Burhan Ali

-1

Sí tu puedes.

<?php exec('(  echo "test<br>créer un mail"| mail -s "SUBJECT" -a "Content-Type: text/html; charset=UTF-8" '.$receiver.' -- -f '.$sender.' ) &> /dev/null &'); ?>
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.