Linux 명령 줄을 사용하여 HTML 이메일을 보내는 방법
html 형식으로 이메일을 보내야합니다. 나는 리눅스 명령 줄과 "메일"명령 만 가지고있다.
현재 사용 :
echo "To: address@example.com" > /var/www/report.csv
echo "Subject: Subject" >> /var/www/report.csv
echo "Content-Type: text/html; charset=\"us-ascii\"" >> /var/www/report.csv
echo "<html>" >> /var/www/report.csv
mysql -u ***** -p***** -H -e "select * from users LIMIT 20" dev >> /var/www/report.csv
echo "</html>" >> /var/www/report.csv
mail -s "Built notification" address@example.com < /var/www/report.csv
하지만 내 메일 에이전트에서는 일반 / 텍스트 만 얻습니다.
이것은 나를 위해 일했습니다.
echo "<b>HTML Message goes here</b>" | mail -s "$(echo -e "This is the subject\nContent-Type: text/html")" foo@example.com
내 버전의 메일에는 포함되어 있지 않으며 -trick에 --append
비해 너무 똑똑합니다 echo -e \n
(단순히 \ n을 공백으로 대체). 그러나 다음이 있습니다 -a
.
mail -a "Content-type: text/html" -s "Built notification" address@example.com < /var/www/report.html
tmp.html이라는 파일을 만들고 다음 줄을 넣으십시오.
<b>my bold message</b>
그런 다음이 모든 것을 명령 줄에 붙여 넣습니다 (괄호와 모두 포함).
(
echo To: youremail@blah.com
echo From: el@defiant.com
echo "Content-Type: text/html; "
echo Subject: a logfile
echo
cat tmp.html
) | sendmail -t
메일이 발송됩니다. 그리고 메시지는 <b>
태그 대신 굵게 표시되었습니다 .
출처 :
bash 명령 "sendmail"을 사용하여 html 이메일을 보내는 방법은 무엇입니까?
문제는 이와 같이 파일을 '메일'로 리디렉션 할 때 메시지 본문에만 사용된다는 것입니다. 파일에 포함하는 모든 헤더는 대신 본문으로 이동합니다.
시험:
mail --append="Content-type: text/html" -s "Built notification" address@example.com < /var/www/report.csv
--append를 사용하면 메일에 임의의 헤더를 추가 할 수 있습니다. 여기서 콘텐츠 유형과 콘텐츠 처리를 지정해야합니다. 파일에 To
및 Subject
헤더 를 포함 하거나 --append를 사용하여 지정할 필요가 없습니다. 이미 명령 줄에서 암시 적으로 설정하고 있기 때문입니다 (-s는 제목이고 address@example.com은 자동으로 To
).
OS X (10.9.4)에서 cat
작동하며 이메일이 이미 파일에있는 경우 더 쉽습니다.
cat email_template.html | mail -s "$(echo -e "Test\nContent-Type: text/html")" karl@marx.com
heirloom-mailx를 사용하면 sendmail 프로그램을 후크 스크립트로 변경하고 헤더를 교체 한 다음 sendmail을 사용할 수 있습니다.
내가 사용하는 스크립트 ( ~/bin/sendmail-hook
) :
#!/bin/bash
sed '1,/^$/{
s,^\(Content-Type: \).*$,\1text/html; charset=utf-8,g
s,^\(Content-Transfer-Encoding: \).*$,\18bit,g
}' | sendmail $@
This script changes the values in the mail header as follows:
Content-Type:
totext/html; charset=utf-8
Content-Transfer-Encoding:
to8bit
(not sure if this is really needed).
To send HTML email:
mail -Ssendmail='~/bin/sendmail-hook' \
-s "Built notification" address@example.com < /var/www/report.csv
you should use "append" mode redirection >>
instead of >
Very old question, however it ranked high when I googled a question about this.
Find the answer here:
Sending HTML mail using a shell script
I was struggling with similar problem (with mail) in one of my git's post_receive hooks and finally I found out, that sendmail actually works better for that kind of things, especially if you know a bit of how e-mails are constructed (and it seems like you know). I know this answer comes very late, but maybe it will be of some use to others too. I made use of heredoc operator and use of the feature, that it expands variables, so it can also run inlined scripts. Just check this out (bash script):
#!/bin/bash
recipients=(
'john@example.com'
'marry@not-so-an.example.com'
# 'naah@not.this.one'
);
sender='highly-automated-reporter@example.com';
subject='Oh, who really cares, seriously...';
sendmail -t <<-MAIL
From: ${sender}
`for r in "${recipients[@]}"; do echo "To: ${r}"; done;`
Subject: ${subject}
Content-Type: text/html; charset=UTF-8
<html><head><meta charset="UTF-8"/></head>
<body><p>Ladies and gents, here comes the report!</p>
<pre>`mysql -u ***** -p***** -H -e "SELECT * FROM users LIMIT 20"`</pre>
</body></html>
MAIL
Note of backticks in the MAIL part to generate some output and remember, that <<-
operator strips only tabs (not spaces) from the beginning of lines, so in that case copy-paste will not work (you need to replace indentation with proper tabs). Or use <<
operator and make no indentation at all. Hope this will help someone. Of course you can use backticks outside o MAIL part and save the output into some variable, that you can later use in the MAIL part — matter of taste and readability. And I know, #!/bin/bash
does not always work on every system.
I found a really easy solution: add to the mail command the modifier -aContent-Type:text/html.
In your case would be:
mail -aContent-Type:text/html -s "Built notification" address@example.com < /var/www/report.csv
Try with :
echo "To: address@example.com" > /var/www/report.csv
echo "Subject: Subject" >> /var/www/report.csv
echo "MIME-Version: 1.0" >> /var/www/report.csv
echo "Content-Type: text/html; charset=\"us-ascii\"" >> /var/www/report.csv
echo "Content-Disposition: inline" >> /var/www/report.csv
echo "<html>" >> /var/www/report.csv
mysql -u ***** -p***** -H -e "select * from users LIMIT 20" dev >> /var/www/report.csv
echo "</html>" >> /var/www/report.csv
mail -s "Built notification" address@example.com < /var/www/report.csv
참고URL : https://stackoverflow.com/questions/2591755/how-to-send-html-email-using-linux-command-line
'Program Tip' 카테고리의 다른 글
matplotlib Python에서 다른 막대 색상 설정 (0) | 2020.12.10 |
---|---|
bash 스크립트에서 찾기 결과를 어떻게 처리 할 수 있습니까? (0) | 2020.12.10 |
iPhone 앱에서 UIButton / UILabel '패딩'을 달성하는 방법 (0) | 2020.12.10 |
Linux 명령 줄 호출이 os.system에서해야하는 것을 반환하지 않습니까? (0) | 2020.12.10 |
Mac OS X에서 쉘 스크립트를 통해 무선 SSID 가져 오기 (0) | 2020.12.10 |