Вместо указания получателя в командной строке, вызовите sendmail с помощью -t
вашего скрипта и сгенерируйте to:
заголовок. (Вы могли бы также сделать subj:
заголовок, пока вы у него.) Затем, когда нет вывода, нет получателя и, следовательно, нет почты.
Cron Job выводит HTML; как отправить почту в формате HTML
У меня есть задание cron, которое в случае неудачи выводит HTML. Если это успешно, это ничего не выводит, в этом случае я не получаю почту. Если он не работает и пишет HTML, cron отправляет мне письмо, но оно приходит в виде простого текста и его трудно прочитать.
Я придумал два частичных решения, но не понял, как заставить его работать действительно хорошо. Во-первых, моя работа должна печатать спецификаторы MIME в верхней части вывода, например так:
Mime-Version: 1.0 Content-Type: text/html <html>...
Затем я запускаю это в cron:
my-job | sendmail my.name
Основная проблема в том, что я получаю почту, даже если текст отсутствует. Вторичная проблема заключается в том, что мне пришлось добавить строки типа MIME в мой скрипт, что для него не совсем подходящее место (не элегантно, но, возможно, терпимо).
Затем я попытался использовать mail
или mailx
, которые имеют -E
возможность пропустить отправку, если нет текста:
my-job | mail -E my.name
Это делает в значительной степени то, что делает cron по умолчанию. Тем не менее, я не могу придумать, как установить тип MIME с помощью mail / mailx! Некоторые ссылки в Интернете говорят, что это делается с использованием этой -a
опции, но в моей системе (Fedora 16) mail -a
принимает имя файла вложения, а не строку заголовка, как, Content-Type: text/html
по-видимому, в некоторых других системах.
Я не хочу создавать временный файл, проверять его размер и т. Д. Я думаю, что я хочу один из них:
- Способ сделать почту cron читабельной как HTML.
- Чтобы sendmail пропускал пустые сообщения.
- Чтобы установить MIME, введите mailx.
- Какой-то другой подход, использующий другую программу, которая установлена по умолчанию в Fedora.
3 ответа на вопрос
Самый простой способ - вызвать sendmail из вашего скрипта. Таким образом, вы можете контролировать, отправляется ли вам какое-либо письмо.
В качестве альтернативы, вы можете заставить ваш скрипт возвращать код успеха, если он потерпит неудачу, и запустить sendmail, только если скрипт выйдет «правильно»:
$ my-job >/tmp/message && cat /tmp/message | sendmail
&&
Говорит Баш, чтобы запустить следующую команду, только если первый возбужденное успешно ( exit 0
в BASH или exit(0)
в PERL). Сказав вашему сценарию выйти со статусом 0, если он потерпит неудачу, вы заставите команду sendmail выполняться только при неудаче.
Вы можете указать тип контента следующим образом:
mail -s "$(echo -e "Status Report: $HOSTNAME\nContent-Type: text/html")" "yourmail@"
Похожие вопросы
-
2
Проблемы MIME-типа с IE и википедией
-
4
Бесплатный HTML-редактор изображений для Windows?
-
9
Как отправить электронное письмо в виде обычного текста, а не HTML в моем почтовом клиенте?
-
-
2
Общие папки / настройки Mac OS для проверки (при попытке избавиться от надоедливого самозапускающего...
-
4
Google слишком медленно загружается
-
6
Что такое хороший, простой и бесплатный редактор HTML для Windows?
-
6
Как найти источник для электронной почты HTML
-
5
crontab разбудить osx из сна
-
4
Графический дизайн в Outlook HTML-письма
-
4
Разрывы строк в письмах Entourage