Faça com que o cron envie emails no formato html


10

Eu tenho um programa de estatísticas que roda em arquivos de log via cron. O programa de estatísticas pode gerar HTML.

Agora eu confio no mecanismo MAIL_TO no crontab.

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

O problema é que eu quero que o email seja exibido como HTML e não como texto sem formatação.

Cron coloca o seguinte cabeçalho no email:

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

Alguma idéia de como eu mudaria isso para:

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

Respostas:


3

Eu não acho que você pode. Uma solução poderia ser canalizar a saída para sendmail ou mail, o que lhe dá mais controle sobre o tipo de conteúdo e outros cabeçalhos.


Obrigado. Eu dei a tubulação para enviar e estou feliz com o que estou vendo. Muito bem sucedida!
Mark L

A CONTENT_TYPEsolução variável mencionada em outra resposta parece funcionar pelo menos em algumas versões do cron.
Peter Eisentraut 15/10

22

Eu coloquei o CONTENT_TYPE="text/plain; charset=utf-8"em /etc/crontabter meu e-mail em UTF-8.

Coloque CONTENT_TYPE="text/html; charset=utf-8"em /etc/crontabpara enviar o e-mail em HTML.

Você pode adicioná-lo em um arquivo específico se o diretório /etc/cron.d/existir. Nesse caso, a especificação é definida apenas para as tarefas solicitadas.


1
Isso é incrível ... pode confirmar que funciona no Ubuntu 14.04.2.
Billynoah 18/09/2015

@billynoah sim, esta deve ser a resposta aceita. Funciona no archlinux, cronie 1.5.1-1
g33kz0r 17/08/16

trabalhou em centos
zzapper 07/12/16

Funciona no Ubuntu 16
Marco Marsala

Não parece funcionar no macOS Mojave.
Burhan Ali

-1

Sim você pode.

<?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 &'); ?>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.