이메일 본문에 추가하여 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
}