별도의 테이블 블록으로 이메일 본문의 여러 HTML 파일

별도의 테이블 블록으로 이메일 본문의 여러 HTML 파일

이메일 본문에 추가하여 html 파일을 생성하고 보내려고 합니다. awk를 사용하여 파일을 생성하고 보내려고 합니다. 예를 들어. 입력 파일 MARTINI에는 다음 레코드가 있습니다.

1554894,2015-04-16,00:21:52,processes.martini_gsicorptradeeventoutput.instancecount,0,1,UP
1554793,2015-04-15,22:03:52,processes.martini_gsicorptradeeventoutput.instancecount,2,0,DOWN 

HTML이라는 파일에 이 awk가 있습니다.

awk 'BEGIN {
    FS=","
    print  "MIME-Version: 1.0"
    print  "To:[email protected]"
    print  "From:[email protected]"
    print  "Subject: Health check"
    print  "Content-Type: text/html"
    print  "Content-Disposition: inline"
    print  "<HTML>""<TABLE border="1"><TH>Ref_id</TH><TH>EOD</TH><TH>Time</TH><TH>Process</TH><TH>Desc</TH><TH>Instance</TH><TH>Status</TH>"
    }
    {
    printf "`<TR>`"
    for(i=1;i<=NF;i++)
    printf "`<TD>%s</TD>`", $i
    print "`</TR>`"
    }
END {
    print "`</TABLE></BODY></HTML>`"
} ' /home/martini > /home/martini_html

나중에 나는 이메일을 통해 이 파일을 보냈습니다 cat MARTINI_HTML | /usr/sbin/sendmail -t. 이것은 여기까지 작동했습니다. 하지만 이제 두 가지 새로운 작업이 생겼습니다.

여러 파일(예: MARTINI1, MARTINI2... 등)을 html 파일로 변환하고 단일 테이블 대신 별도의 테이블 블록으로 이메일 본문에 추가하려면 어떻게 해야 합니까? 일부 메일 유틸리티(예:)를 mailx사용할 수 없습니다.

답변1

설정해야합니다컨텐츠 타입도착하다멀티파트/하이브리드경계(구분자 문자열)를 정의하고 각 파일 사이에 해당 문자열의 인스턴스를 추가합니다. 얼마 전 이 게시물에서 몇 가지 예를 제공했습니다.Bash 및 Sendmail만 사용하여 여러 입력 파일 및/또는 파이프를 이메일의 첨부 파일로 보내기

일부 코드:

# ========================
# Attach file to msg
# ========================
attach_file() {

cat >> $TMP_FL << EOF

--$BOUNDARY
Content-Type: $MIMETYPE; name="$MAIL_FL"
Content-Transfer-Encoding: 8bit
Content-Disposition: attachment; filename="$MAIL_FL"

`cat $ATTACHMENT`
EOF
}

# ========================
# ========================
create_msg() {

  cat > $TMP_FL <<EOF
From: $FROM
`echo -e $MAILTO`
Reply-To: $REPLY_TO
Subject: $SUBJECT_LINE
Content-Type: multipart/mixed; boundary="$BOUNDARY"

This is a MIME formatted message.  If you see this text it means that your
email software does not support MIME formatted messages, but as plain text
encoded you should be ok, with a plain text file.

--$BOUNDARY

EOF

...
for attach in "xxxxx yyyyyy"
do 
  ATTACHMENT=$attach
  attach_file >> $TMP_FL
done
...


  echo -e "\n--$BOUNDARY--\n" >> $TMP_FL
}

관련 정보