
Я пытаюсь отправить HTML-письмо с нашего сервера CentOS пользователям. В долгосрочной перспективе я создам программу COBOL, которая будет запускать команду для отправки отчетов пользователю.
Вот несколько подробностей.
- CentOS 6.4
- MAU: Mailx
- MTA: Постфикс 2.6.6
- Postfix запускает ретрансляцию через сервер обмена.
Что касается команд, которые я пробовал запускать. Больше всего я видел сегодня следующее.
$ mailx -a 'Content-Type: text/html' -s "Command Line Test" [email protected] < ./bodytext.html
После запуска показанной команды я получаю сообщение об ошибке "Content-Type: text/html: Такого файла или каталога нет". Я почти уверен, что после определенного обновления они перестали разрешать -a как флаг для обозначения Content-Type.
Я также пробовал добавлять «Content-Type: text/html» в файл bodytext.html в качестве самой первой строки. Я просто не знаю, что мне делать, чтобы отправить HTML-письмо. Некоторые из найденных мной источников говорят, что mailx и postfix не могут правильно отправлять HTML-письма. Надеюсь, это не так, но если это так, то я хотел бы узнать, что вы думаете о других технологиях MAU и MTA?
решение1
Поскольку вы, по-видимому, имеете полный контроль над сгенерированным текстовым файлом, самым простым и, вероятно, наиболее портативным способом будет /usr/sbin/sendmail
прямое участие.
/usr/sbin/sendmail -t < complete-mail.txt
Это потребует от вас добавления всех важных заголовков самостоятельно ( From
, To
, Subject
, и Content-Type
). Файл должен выглядеть следующим образом:
From: Company <[email protected]>
To: Customer <[email protected]>
Subject: You are awesome
Content-Type: text/html
<html>…</html>
Postfix добавит отсутствующие, но необходимые заголовки, такие как Date
.
решение2
Вы вообще читали инструкцию?mailx
, особенно -a
вариант?
-a file
Прикрепите указанный файл к сообщению.
Отответ Жиля, так как CentOS использует эту версию mailx
:
С реликвиейmailx, удобного способа нет. Одна из возможностей вставить произвольные заголовки — установить editheaders=1 и использовать внешний редактор (который может быть скриптом).
## Prepare a temporary script that will serve as an editor. ## This script will be passed to ed. temp_script=$(mktemp) cat <<'EOF' >>"$temp_script" 1a Content-Type: text/html . $r test.html w q EOF ## Call mailx, and tell it to invoke the editor script EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" to@address <<EOF ~e . EOF rm -f "$temp_script"
Postfix, безусловно, может отправлять HTML-письма.