10

I have a stats program which runs on log files via cron. The stats program can output HTML.

Right now I rely on the MAIL_TO mechanism in the crontab.

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

The problem is that I want the email sent to display as HTML and not as plain text.

Cron places the following header in the email:

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

Any idea how I would change this to:

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

I don't think you can. A solution could be to pipe the output to sendmail or mail, which gives you more control over content type and other headers.

2
  • Thanks. I gave the piping to mail a go and I'm happy with what I'm seeing. All the best!
    – Mark L
    Jan 13 '10 at 11:48
  • The CONTENT_TYPE variable solution mentioned in another answer seems to work at least in some cron versions. Oct 15 '13 at 18:19
23

I put the CONTENT_TYPE="text/plain; charset=utf-8" in /etc/crontab to have my mail in UTF-8.

Put CONTENT_TYPE="text/html; charset=utf-8" in /etc/crontab to send the mail in HTML.

You may add it in specific file if the directory /etc/cron.d/ exists. In this case, the specification is defined only for the requested tasks.

5
  • 1
    This is awesome... can confirm it works on Ubuntu 14.04.2.
    – billynoah
    Sep 18 '15 at 22:25
  • @billynoah yes, this should be the accepted answer. Works on archlinux, cronie 1.5.1-1
    – user7835
    Aug 17 '16 at 18:32
  • worked on centos
    – zzapper
    Dec 7 '16 at 15:20
  • Works in Ubuntu 16 Nov 13 '18 at 8:08
  • Doesn't appear to work on macOS Mojave.
    – Burhan Ali
    Feb 22 '19 at 10:28
-1

YES, you can.

<?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 &'); ?>

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.