메시지를 sendmail로 파이프하는 형식은 무엇입니까? “Subject:Hello \n\n

다음 명령을 사용하여 메시지를 즉시 작성하여 보냅니다.

echo "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com

파일에서 정보를 보낼 때 다음과 같은 작업을 수행하는 것 같습니다.

sendmail email@example.com mail.txt 

그런 다음 sendmail은 각 줄을 헤더로보고 구문 분석합니다. 그러나 내가 위에서 보낸 방식으로 모든 것이 제목 줄에 끝납니다.

헤더가 포함 된 메시지를 sendmail에 에코하려면 형식은 무엇입니까? 어떻게합니까?



답변

당신의 echo문장은 실제로 시퀀스 \뒤에가 아닌 개행을 출력해야합니다 n. 다음 -e옵션 을 제공하여이를 수행 할 수 있습니다 .

echo -e "Subject:Hello \n\n I would like to buy a hamburger\n" | sendmail email@example.com

차이점을 이해하려면 다음 두 명령의 출력을 살펴보십시오.

echo "Subject:Hello \n\n I would like to buy a hamburger\n"
echo -e "Subject:Hello \n\n I would like to buy a hamburger\n"


답변

쉘 스크립트의 “여기 문서”(메시지 헤더 및 본문 작성)

#!/bin/sh
TO=email@example.com
/usr/sbin/sendmail -i $TO <<MAIL_END
Subject: Hello
To: $TO

I would like to buy a hamburger
MAIL_END

외부 파일의 메시지 본문

#!/bin/sh
TO=email@example.com
BODY_FILE=mail.txt
(cat - $BODY_FILE)<<HEADERS_END | /usr/sbin/sendmail -i $TO
Subject: Hello
To: $TO

HEADERS_END


답변