
Я не могу отправить электронное письмо с телом html с вложением. Команда1:
echo "<html><b>Hello</b></html>" | mail -s "Subject #1" -a "content-type: text/html" [email protected]
Команда2:
echo "<html><b>Hello</b></html>" | mail -s "Subject #2" -a "content-type: text/html" [email protected] -A "/Users/asdf/Downloads/00000001.pdf"
Command1 работает отлично. Я вижу письмо с телом html.
Во 2-й команде тело не в формате html.
Пожалуйста, дайте мне знать, если я что-то упустил.
решение1
Я не знаю, какой почтовый инструмент вы используете (и какую версию), но если это GNU mailutils, вы, вероятно, столкнетесь с этой ошибкой:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918806#22 Обходной путь — использовать параметр командной строки -M (или --mime) для составления сообщений MIME.
решение2
Вложения всегда отправляются с использованием составных сообщений MIME, поэтому корневой тип содержимого описываетмногокомпонентная структура сама по себе, и каждая часть имеетсвой собственныйЗаголовок Content-Type внутри. Вы должны увидеть, Content-Type: multipart/related
если посмотрите на источник такого сообщения.
Насколько мне известно, ни mailutils, ни mailx не имеют возможности изменять Content-Type части тела письма по отдельности.
решение3
В текущей версии GNU Mailutils это можно сделать mailx
следующим образом:
echo "<html><b>Hello</b></html>" | mailx --content-type="application/pdf" --attach=/Users/asdf/Downloads/00000001.pdf --content-type="text/html" --subject="Subject #2" [email protected]
Обратите внимание, что --content-type
это позиционный вариант, относящийся квсеследующие вложения (если их несколько) и последнее указанное значение затем также используются для тела сообщения (вот почему оно снова изменяется в конце).