Как отправить HTML-адрес электронной почты с несколькими текстовыми вложениями, используя sendmail

Я хочу отправить HTML-файл как тело сообщения и хочу приложить несколько текстовых файлов к этому сообщению электронной почты.

Поскольку html-файл должен быть отправлен, необходимо использовать sendmail (я не мог использовать его с помощью mailx).

Как отправить электронную почту HTML и несколько текстовых вложений с помощью sendmail?

Я не думаю, что sendmail поможет вам в этом. Идите для клиента, такого как mutt , и выполните, например, mutt -a file1 -a file2 -- recipient@do.main . Или пойти на perl .

Предполагая, что у вас есть uunecode, ansible в вашей системе, вы можете отправлять электронную почту с несколькими вложениями, например:

 #!/bin/bash ... ... ... BOUNDARY="=== This is the boundary between parts of the message. ===" { echo "From: $MAILFROM" echo "To: $MAILTO" echo "Subject:" $SUBJECT echo "MIME-Version: 1.0" echo "Content-Type: MULTIPART/MIXED; " echo " BOUNDARY="\"$BOUNDARY\" echo echo " This message is in MIME format. But if you can see this," echo " you aren't using a MIME aware mail program. You shouldn't " echo " have too many problems because this message is entirely in" echo " ASCII and is designed to be somewhat readable with old " echo " mail software." echo echo "--${BOUNDARY}" echo "Content-Type: TEXT/PLAIN; charset=US-ASCII" echo echo "This email comes with multiple attachments." echo echo echo "--${BOUNDARY}" echo "Content-Type: application/zip; charset=US-ASCII; name="${ZIPFILE} echo "Content-Disposition: attachment; filename="`basename ${ZIPFILE}` echo uuencode $ZIPFILE $ZIPFILE echo echo "--${BOUNDARY}--" echo "Content-Type: application/pdf; charset=US-ASCII; name="${PDFFILE} echo "Content-Disposition: attachment; filename="`basename ${PDFFILE}` echo uuencode $PDFFILE $PDFFILE echo echo "--${BOUNDARY}--" } | /usr/lib/sendmail -t 

Вот сценарий bash, который я использую для отправки отчетов, которые я генерирую людям. Они отправляются как вложения. Поместите свой HTML в переменную «body» скрипта. Я оставлю параметризацию переменных до вас.

 #!/bin/bash function get_mimetype(){ file --mime-type "$1" | sed 's/.*: //' } from="me.last@company.com" to="some.one@companyBlah.com" subject="Your Report my Lord" boundary="=== Boundary ===" body="The reports are attached to this email" declare -a attachments attachments=( "fileOne.out" "fileTwo.out" "fileThree.out" "file-et-cetera.out") # Build headers { printf '%s\n' "From: $from To: $to Subject: $subject Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=\"$boundary\" --${boundary} Content-Type: text/plain; charset=\"US-ASCII\" Content-Transfer-Encoding: 7bit Content-Disposition: inline $body " for file in "${attachments[@]}"; do [ ! -f "$file" ] && echo "Attachment $file not found, omitting file" >&2 && continue mimetype=$(get_mimetype "$file") printf '%s\n' "--${boundary} Content-Type: $mimetype Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=\"$file\" " base64 "$file" echo done # print last boundary with closing -- printf '%s\n' "--${boundary}--" } | sendmail -t -oi