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.

[email protected]
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"
Mark L
fonte

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.

Jakob Borg
fonte
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.

Dom
fonte
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 &'); ?>
George SEDRA
fonte