아래 스크립트는 내 Linux 서버에서 제대로 실행됩니다.
(
echo "From: [email protected]";
echo "To: [email protected]";
echo "Subject: Test Subject";
echo "Content-Type: text/html";
echo "MIME-Version: 1.0";
echo "";
echo "<html><head><title>HTML E-mail</title></head>
<body><p>Test Body Message</p></body></html>";
) | sendmail -t
그런데 아래와 같이 스크립트를 수정하면 "헤더에 수신자 주소를 찾을 수 없습니다"라는 오류가 나옵니다.변수를 사용하여 아래 코드를 연습할 수 있습니까? sendmail을 제외한 파일이나 다른 메일 명령을 사용하고 싶지 않습니다..
var1='(
echo "From: [email protected]";
echo "To: [email protected]";
echo "Subject: Test Subject";
echo "Content-Type: text/html";
echo "MIME-Version: 1.0";
echo "";
echo "<html><head><title>HTML E-mail</title></head>
<body><p>Test Body Message</p></body></html>";
)'
echo ${var1} | sendmail -t
답변1
명령 대체는 줄 끝을 공백으로 대체합니다.
;"
대신 사용";
tr \; '\n'
줄 끝을 다시 활성화하는 데 사용됩니다 .- awk를 사용하여 공백으로 첫 번째 문자 들여쓰기 취소
To:
실을 먼저 넣어주세요
이는 어느 정도의 추악함을 가져옵니다.
var1=$(
echo "To: [email protected];"
echo "From: [email protected];"
echo "Subject: mail HTML ;"
echo "Content-Type: text/html;"
echo "MIME-Version: 1.0;"
echo ";"
echo "<html><head><title>HTML E-mail</title></head>
body><p>Test Body Message</p></body></html>"
)
## can be one-lined, pipe symbol (|) continue line.
echo ${var1} | tr \; '\n' |
awk 'length == 1 || NR == 1 {print $0} length && NR > 1 { print substr($0,2) }' |
sendmail -t
그러나 일부 HTML 코드(예: á
리디렉션 á
)가 손상되어 이제 메일이 첨부 파일을 보낼 수 있다는 것을 알고 계셨습니까?
man mail
-A, --attach=FILE attach FILE
mail -A <(generate HTML result) [email protected]
답변2
변수 정의에서 echo 명령을 제거합니다.