ksh에는 다음 코드 줄이 있습니다.
echo -e "$SUBJECT"|/usr/sbin/sendmail -f [email protected] -t [email protected]
$SUBJECT
하지만 여전히 실제 주제가 아닌 본문에 담았습니다 . 무슨 문제가 있나요?
답변1
때로는 모든 헤더를 보내는 것이 더 쉽습니다.echo
예를 들어
{
echo From: xxxx
echo To: yyyy
echo Subject: Foobar
echo
echo This is the message
} | /usr/lib/sendmail -t
답변2
제목이 제목의 일부입니다. 다음을 시도해 보세요.
echo -e "Subject:$SUBJECT" | /usr/sbin/sendmail -f [email protected] -t [email protected]
답변3
echo -e
당신은 정말로 이곳을 피하고 싶습니다 . 사실, 그것을 선택하는 데는 여러 가지 이유가 있으며 printf
, 그 중 가장 중요한 것은 편리성입니다.
printf '%s\n' "Subject: $subject" \
"From: I am a Sender <[email protected]>" \
"To: Recipient <[email protected]>" \
"" \
"This is the body of the message." \
"It spans multiple lines." |
sendmail -oi -t
빈 줄( ""
)은 헤더와 메시지 본문을 구분합니다. 단순 SMTP 메시지는 US-ASCII 전용 일반 텍스트입니다.
아직까지 할 수 있는 일이 상당히 제한되어 있습니다. ASCII가 아닌 문자 집합이나 중요한 MIME 구조를 사용해야 하는 경우에는 문자열을 하나씩 붙여넣고 싶지 않을 것입니다. 일부 버전에서는 mail
첨부 파일이 포함된 적절한 MIME 메시지를 조합할 수 있으며, 더 복잡한 요구사항이 있는 경우 mailx
이를 볼 수 있습니다.mutt
일반적인 실수는 다음과 같습니다
<
주소 헤더에서 이전 공백을 생략하거나 특정 헤더 필드 주위에 이상한 따옴표를 배치해야 한다는 이상한 주장- 제목과 본문 사이의 빈 줄은 잊어버리세요
- 본문(추가 MIME 헤더 없음)이 HTML이나 멀티파트가 아닌 일반 텍스트라는 점을 이해하지 마십시오.
- 본문에 매우 긴 줄을 입력합니다(SMTP는 줄당 1000자 미만을 허용합니다. 이 제한을 깨려면 적절한 MIME 래핑을 사용하세요).
- 문자 집합을 선언하지 않고 유니코드를 사용해 보십시오. (예상했겠지만 이를 수행하려면 MIME을 배우고 사용하십시오.)
또한 참고하시기 바랍니다Bash 및 쉘 스크립트 변수 대소문자 수정
답변4
echo -e "Subject:$sub" |sendmail -f [email protected] -t [email protected]. < body_detail.txt