Несколько вложений электронной почты с использованием MIME и Postfix - PullRequest
0 голосов
/ 07 июня 2018

У меня есть шаблон электронной почты с использованием mime с заполнителем из 2 вложений:

--MixedBoundaryString
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="${filename1}"

${attachment1}

--MixedBoundaryString
Content-Type: text/plain
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="${filename2}"

${attachment2}
--MixedBoundaryString--

и созданный сценарий bash для замены содержимого сообщения электронной почты и заполнителя вложения перед его отправкой.Сценарий bash предполагает отправку с 1 вложением для ежедневной электронной почты и 2 вложениями, когда это последний день месяца.

Ниже приведена часть моего сценария, я установил FILENAME2="" и ATTACHMENT2="" при выполнении sed, но получаю вложение с именем ATT00001.txt.

SUBJECT="TESTING"
FILENAME1="something"
FILENAME2=""
ATTACHMENT1=$(base64 attachment | tr -d '\n')
ATTACHMENT2=""

sed -e "s/\${subject}/$SUBJECT/" \
    -e "s/\${filename1}/$FILENAME1/" \
    -e "s/\${attachment1}/$ATTACHMENT1/" \
    -e "s/\${filename2}/$FILENAME2/" \
    -e "s/\${attachment2}/$ATTACHMENT2/"temp > email
    `sendmail -f $SENDER $RECIPIENTS < email`

Как я могу это решить?

Заранее спасибо

1 Ответ

0 голосов
/ 07 июня 2018

Команда 'envsubst', доступная в пакете gettext, может помочь.По сути, вы можете создать текстовый файл шаблона, который содержит переменные в качестве заполнителей.Я не использовал это, потому что я не использовал бы bash как этот, но я использовал что-то под названием веточка, которая действует аналогично.

#!/bin/bash
#  sudo yum install gettext
mssg="This is a message"
filename="FILENAME"
ls /tmp/ > /tmp/result.txt
attach=$(base64 /tmp/result.txt)
email_file="/tmp/sendemail.txt"
template_email="/tmp/template-email.eml"

function build_email_temp() {

    > "${template_email}"
    echo "$mssg"  >> "${template_email}"
    echo "--MixedBoundaryString" >> "${template_email}"
    echo "Content-Type: text/plain" >> "${template_email}"
    echo "Content-Transfer-Encoding: base64" >> "${template_email}"
    echo "Content-Disposition: attachment; filename=${filename}" >> "${template_email}"
    echo "\${attachment}" >> "${template_email}"
    echo "--MixedBoundaryString-- " >> "${template_email}"
    echo ""  >> "${template_email}"

}

build_email_temp
export from='$from' to="$to" mssg='${mssg}' filename='$filename' attachment="$(echo $attach)"
MYVARS='$mssg:$filename:$result:$attachment'

envsubst "$MYVARS" < $template_email > $email_file
cat "$email_file"
mail -s "test" "email@address.com" < $email_file
...