Отправка электронной почты с телом HTML и вложением с помощью mailx

В настоящее время я использую mailx для отправки писем в формате html из моих скриптов:

cat body.html | /usr/bin/mailx -a "From: Me <me@domain>" -a "Content-type: text/html" -s "My subject" $RECIPIENTS

Теперь я хотел бы добавить вложение (изображение png), но я не могу понять, как это сделать. Я хотел бы попробовать с mailx, прежде чем переходить на mutt или что-то еще. Большое спасибо


person user2683188    schedule 10.03.2014    source источник
comment
Посмотрите ЗДЕСЬ   -  person Dinesh Reddy    schedule 10.03.2014
comment
@Dinesh Это не очень хороший ответ. HTML и uuencode не являются разумной комбинацией.   -  person tripleee    schedule 10.03.2014


Ответы (2)


Если ваши требования просты, вы можете использовать простой Sendmail. Это не то, что я особенно рекомендую, но поскольку вы хотели избежать mutt...

# Now that we actually concatenate two files (well, stdin and a file),
# we are no longer eligible for a Useless Use of Cat Award
( cat - body.html <<HERE
Subject: My subject
Mime-Version: 1.0
Content-type: multipart/related; boundary="foooobar"

--foooobar
Content-type: text/html

HERE

cat <<HERE

--foooobar
Content-type: image/png
Content-disposition: inline
Content-transfer-encoding: base64

HERE

base64 image.png

echo; echo '--foooobar--' ) | sendmail -oi $RECIPIENTS

Хотелось бы, чтобы для этого была простая стандартная утилита, но, увы, вместо этого их много, и все более или менее взаимно несовместимы и мутны. Опять же, если вы можете использовать mutt, это, вероятно, наиболее широко поддерживаемый и стандартный инструмент, на который вы можете надеяться.

person tripleee    schedule 10.03.2014
comment
Спасибо, тройка, однако (и это другая проблема) при использовании sendmail почта попадает в мусор в ящике получателя (gmail). - person user2683188; 11.03.2014
comment
Вероятно, это функция вашего контента, а не программы, которую вы использовали для его отправки. - person tripleee; 11.03.2014

Попробуй это:

uuncode input_file2.jpg attachment2.jpg >>tempfile
cat tempfile | mailx -s "subject" <email>

Uuencode читает файл (или стандартный ввод по умолчанию) и записывает закодированную версию в стандартный вывод. Кодировка использует только печать символов ASCII и включает режим файла и имя операнда для использования uudecode. Если имя /dev/stdout, результат будет записан в стандартный вывод. По умолчанию будет использоваться стандартный формат кодировки UU. Если в командной строке задана опция -m, вместо нее используется кодировка base64.

person Ron    schedule 27.04.2015
comment
Хотя код приветствуется, он всегда должен сопровождаться пояснением. Это не должно быть долго, но это ожидается. - person peterh; 27.04.2015
comment
команды, упомянутые в комментарии, можно легко проверить перед выполнением, я не вижу, что нужно объяснять дальше, поскольку запрашивающий пользователь уже использует mailx и знает о cat. uunicode, можно легко управлять - person Ron; 27.04.2015
comment
Uuencode — это устаревший механизм, которого следует избегать, если только вы не застряли с инструментами 1980-х годов, которые до сих пор не поддерживают MIME. - person tripleee; 29.12.2019