UNIX에서 HTML 전자 메일 메시지에 첨부 파일을 추가하는 방법은 무엇입니까?

UNIX에서 HTML 전자 메일 메시지에 첨부 파일을 추가하는 방법은 무엇입니까?

UNIX 컴퓨터에서 이메일 본문에 HTML 파일을 이메일로 보내야 합니다. HTML 파일을 호출해 봅시다hello.html

에서 다음 코드를 사용하고 있습니다 bash script.

(
echo "To: [email protected]" 
echo "Subject: Report" 
echo "Content-Type: text/html" 
echo
cat hello.html
echo 
) | /usr/sbin/sendmail -t

위의 코드는 나에게 잘 작동합니다. 이제 이 이메일에 zip 파일도 첨부하고 싶습니다. 이를 수행할 수 있는 방법이 있습니까?

나는 mail, mailx및 를 사용하는 것으로 제한되어 있습니다 /usr/sbin/sendmail.

답변1

zip 파일을 첨부하여 실제 이메일을 자신에게 보내고 원본 내용을 확인하는 것이 좋습니다.

이메일 형식은 다음과 같습니다.몸짓 광대극텍스트 이메일에 다양한 파일 형식이 포함되는 방식을 지정하는 표준입니다.

귀하의 경우 최상위 수준컨텐츠 타입다음과 같을 것이다멀티파트/교체또는멀티파트/하이브리드. 두 개 이상이 있고 자체 부품이나 섹션이 있습니다.컨텐츠 타입. 하나는 유형이 있습니다애플리케이션/zip. 이것애플리케이션/zip섹션에는 zip 파일의 텍스트 인코딩(예: Base 64)이 포함됩니다.

예는 다음과 같습니다.

From: John Doe <[email protected]>
MIME-Version: 1.0
Content-Type: multipart/mixed;
        boundary="XXXXboundary text"

This is a multipart message in MIME format.

--XXXXboundary text 
Content-Type: text/plain

this is the body text


--XXXXboundary text 
Content-Type: text/html

<html>
  ...Body of email in HTML format...
</html>

--XXXXboundary text 
Content-Type: application/zip;
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
        filename="test.zip"

BASE64 ENCODING TEXT HERE

--XXXXboundary text--

추가 정보:MIME을 사용한 이메일 첨부 파일

질문의 근원으로 돌아가서 어떻게 해야 할까요? 저는 이와 같은 이메일을 작성하는 데 도움이 되는 독립 실행형 도구에 익숙하지 않지만 유용한 도구를 찾지 못한다면 놀랄 것입니다. 이메일 클라이언트 중 하나가 명령줄/대량 작업을 지원할 수도 있습니다. 그러나 최악의 경우에는 ASCII 텍스트일 뿐이므로 HTML 이메일과 동일한 방식으로 수동으로 쉽게 작성할 수 있습니다. 하지만 메시지를 메일 에이전트에 전달하기 전에 임시 파일에 메시지를 작성하는 것이 좋습니다. (많은 양의 텍스트를 쉽게 저장하려면 여기에서 문서를 확인하세요.)

앞서 언급했듯이 zip 파일을 Base 64로 변환해야 합니다. 거의 모든 Linux 설치에는 이 base64유틸리티나 이에 상응하는 도구가 있어야 합니다 . zip을 전달하고 적절한 시간에 이메일 파일에 첨부하면 됩니다.

base64 test.zip >> my-email-file.txt

답변2

#!/usr/bin/ksh
export MAILTO="email_address"
export CONTENT="/export/home/aisdba/email_body.html"
export SUBJECT="subject of email"
(
echo "Subject: $SUBJECT"
echo "MIME-Version: 1.0"
echo "Content-Type: text/html"
echo "Content-Disposition: inline"
cat $CONTENT
) | /usr/sbin/sendmail $MAILTO

(또는) 보낼 수 있는 인라인 메시지로.

cat <<'EOF' - CH_ARG.html | /usr/sbin/sendmail $TARGET_DL
Subject: your subject line
Content-Type: text/html
MIME-Version: 1.0
Content-Disposition: inline
EOF

(또는) 아래 첨부 파일을 사용해 보세요

cat <<'EOF' - CH_ARG.html | /usr/sbin/sendmail $TARGET_DL
Subject: Your subject line
Content-Type: text/text
MIME-Version: 1.0
Content-Disposition: attachment
EOF

관련 정보