如何在命令列下寄信
在Unix的系統管理上我們常會把各式各樣指令的輸出導到檔案去
在Unix下寄mail是一件很平常的事,
在Unix下最常被用來寄信的指令應該非mail莫屬,
現在我們就來看個簡單的例子。假設你想把/etc/hosts的內容傳到你的電腦上,
# cat /etc/hosts |mailx -s 'hosts table' jerry@abc.com
許多人應該都知道要怎麼用,而且也很多人應該是這樣子用的。
# mailx -s 'hosts table' jerry@abc.com < /etc/hosts
-s(Subject)是主旨,如果主旨有空白字元的話,
或者你在Linux下而且又裝了mutt。
# mutt -s 'hosts table' jerry@abc.com
可是這樣子寄,/etc/hosts的內容是在信裡面呀,
# uuencode /etc/hosts hosts.txt | mailx -s 'hosts table' jerry@abc.com
利用uuencode把/etc/
# tar cf - /etc/* | uuencode etc.tar | mailx -s 'hosts table' jerry@abc.com
如果你用的是mutt那就更簡單了。只要加個-a(attach file)
# echo '/etc/hosts'|mutt -a /etc/hosts -s 'hosts table' jerry@abc.com
有人會問說「Jerry,我不要只是寄純文字的mail,
# mutt -e 'set content_type="text/html"' jerry@abc.com" -s 'html format'
mutt允許我們對要寄出的mail修改它的檔頭(
如果沒有mutt呢!裝一個,不然就繼續看下去。
# echo 'Mime-Version: 1.0
> Content-type: text/html; charset="iso-8859-1"
> From: jerry@abc.com
> To: jerry@abc.com.tw
> Subject: test.......
>
> html file
> ' | sendmail -t
使用echo把檔頭和所要html的內容全部輸出給sendma
#!/bin/sh
fromuser=jerry@abc.com
touser=jerry@abc.com,abc,boss@abc.com
subject="`uname -n` df output"
sendmail="/usr/sbin/sendmail -t"
header="Mime-Version: 1.0
Content-type: text/html; charset="iso-8859-1"
From: $fromuser
To: $touser
Subject: $subject""
footer="
{
echo "$header"
### replace your code here. ###
df -k |awk '/^\//{$5=sprintf("%2d%",$5) ; print $0}'
###############################
echo "$footer"
} | $sendmail
下面二個script,第一個是shell script;第二個是perl script,你可以把要輸出的內容存成html檔,
使用的方法如下,
sendhtml.pl "my subject" jerry@abc.com my_file.html
#!/bin/sh
## usage : sendhtml.sh subject To_User html_file
subject="$1"
touser="$2"
htmlfile="$3"
fromuser="jerry@abc.com"
sendmail="/usr/sbin/sendmail -t"
header="Mime-Version: 1.0
Content-type: text/html; charset=\"iso-8859-1\"
From: $fromuser
To: $touser
Subject: $subject"
{
echo "$header"
cat "$htmlfile"
} | $sendmail
#!/usr/bin/perl -w
# usage : sendhtml.pl subject To_User html_file
my $sendmail = "/usr/sbin/sendmail";
my $fromuser = "jerry\@abc.com";
$subject = $ARGV[0];
$touser = $ARGV[1];
$htmlfile = $ARGV[2];
$header="Mime-Version: 1.0
Content-type: text/html; charset=\"iso-8859-1\"
From: $fromuser
To: $touser
Subject: $subject\n";
open(fd2, "| $sendmail -t");
print fd2 $header;
open(fd1, $htmlfile);
while(my $line=) {
print fd2 "$line\n";
}
close(fd2);
close(fd1);
在寄附件的部份能不用uuencode就不要用,
在命令列下寄mail的方法不只這些,如使用nail(
留言