mail -s "subject" [email protected] <test.html
작동하지만 일반 텍스트 이메일에만 해당됩니다.
Linux 명령을 사용하여 HTML 이메일을 보내는 올바른 방법은 무엇입니까 mail
?
답변1
주변에는 다양한 버전이 있습니다 mail
. 초월할 때 mail -s subject to1@address1 to2@address2 <body
(보내면 그게 다야)POSIX보증 - -s
존재하지도 않습니다.과거), 명령줄 옵션이 다른 경우가 많습니다. 추가 헤더를 추가하는 것이 항상 쉬운 것은 아닙니다.
mailx
다음과 같은 일부 구현을 통해mailutils
우분투 에서또는데비안bsd-mailx
, 옵션이 있기 때문에 쉽습니다.mailx -a 'Content-Type: text/html' -s "Subject" to@address <test.html
와 함께가족 가보
mailx
, 편리한 방법이 없습니다. 임의의 헤더를 삽입할 수 있는 한 가지 방법은editheaders=1
외부 편집기(스크립트일 수 있음)를 설정하고 사용하는 것입니다 .## Prepare a temporary script that will serve as an editor. ## This script will be passed to ed. temp_script=$(mktemp) cat <<'EOF' >>"$temp_script" 1a Content-Type: text/html . $r test.html w q EOF ## Call mailx, and tell it to invoke the editor script EDITOR="ed -s $temp_script" heirloom-mailx -S editheaders=1 -s "Subject" to@address <<EOF ~e . EOF rm -f "$temp_script"
일반과 함께POSIX
mailx
, 제목을 얻는 방법을 모르겠습니다.
혹시 사용하시거나 mail
기억 mailx
하고 계시다면
- 이는 특정 Linux 배포판 내에서도 이식 가능하지 않습니다. 예를 들어 Ubuntu와 Debian에는 다양한
mail
대안이 있습니다mailx
. - 메시지를 작성할 때 및 로 시작하는 줄은
mail
명령mailx
으로 간주됩니다~
. 에 텍스트를 파이프하는 경우mail
텍스트에 로 시작하는 줄이 포함되지 않도록 정렬해야 합니다~
.
어쨌든 소프트웨어를 설치하려면 mail
// 보다 Mail
더 예측 가능한 것을 설치하는 것이 좋습니다 mailx
. 예를 들어,바보. Mutt를 사용하면 다음 옵션을 사용하여 입력에 대부분의 헤더를 제공할 수 있습니다 -H
:하지만Content-Type
, mutt 옵션을 통해 설정해야 합니다.
mutt -e 'set content_type=text/html' -s 'hello' 'to@address' <test.html
아니면 전화해도 돼요sendmail
곧장. 여러 버전이 있지만 sendmail
모두 sendmail -t
이메일에서 수신자 목록을 읽는 가장 간단한 방법으로 이메일 보내기를 지원합니다. (나는 그들이 모두 그것을 지원한다고 생각하지 않습니다 Bcc:
.) 대부분의 시스템에서 sendmail
일반적인 시스템은 아니지만 $PATH
또는 ./usr/sbin
/usr/lib
cat <<'EOF' - test.html | /usr/sbin/sendmail -t
To: to@address
Subject: hello
Content-Type: text/html
EOF
답변2
#!/bin/sh
(
echo "To: [email protected]"
echo "Subject: hello"
echo "Content-Type: text/html"
echo
echo "<html><b><font size='7'>H</font>ello</b></html>"
echo
) | /usr/sbin/sendmail -t
답변3
Heirloom mailx를 사용하면 편리한 방법은 다음과 같습니다.
mailx -s "$(echo -e "Newsletter issue 3\nContent-Type: text/html")" [email protected] < /tmp/htmlmail.txt
감사해요,남성
Fedora 17에서 테스트 및 실행
답변4
heirloom-mailx를 사용하면 sendmail 프로그램을 후크 스크립트로 변경하고 헤더를 바꾼 다음 sendmail을 사용할 수 있습니다.
내가 사용하는 스크립트( ~/bin/sendmail-mailx-hook
):
#!/bin/bash
sed '1,/^$/{
s,^\(Content-Type: \).*$,\1text/html; charset=utf-8,g
s,^\(Content-Transfer-Encoding: \).*$,\18bit,g
}' | sendmail $@
이 스크립트는 메시지 헤더의 값을 다음과 같이 변경합니다.
Content-Type:
도착하다text/html; charset=utf-8
Content-Transfer-Encoding:
(8bit
이것이 실제로 필요한지는 확실하지 않습니다).
HTML 이메일을 보내려면:
mailx -Ssendmail='~/bin/sendmail-mailx-hook' -s "subject" [email protected] < test.html
이 방법은 임시 파일을 생성하지 않고 스트림을 즉시 수정하므로 @Gilles가 제안한 방법보다 더 효율적입니다.