linux下利用mutt来发邮件
一、为什么使用mutt
为什么要用mutt发邮件呢?因为linux自带的mail命令不好使,尤其是中文很容易乱码,后来用了下mutt,果然好用。
mutt安装很简单:yum install mutt -y,安装后就可以使用了,mutt甚至可以在不启动sendmail 或postfix的情况下发邮件。(但是,在测试中发现,不开启sendmail,邮件发送不出去。)mutt跟linux的mail一样,其实都是个命令,如果用过mail,在用mutt会很顺手的,同时mutt在不同linux版本上的语法不一样,具体语法可以参考帮助mutt -h
在linux5下mutt的语法是:
echo "hello" | mutt -a test.txt -s "date" admin@https://www.wendangku.net/doc/3c5588159.html,
正文附件主题收件人
在linux6下mutt的语法是
echo "hello" | mutt -a test.txt -s "date" -- admin@https://www.wendangku.net/doc/3c5588159.html,
正文附件主题收件人
二、配置及发送示例
1. mutt简单配置
默认情况下mutt的发件人格式是用户名@主机名.主机域名,如root@https://www.wendangku.net/doc/3c5588159.html,,这种格式有可能被邮件服务器认为是垃圾邮件。
可以通过修改发件人信息,来避免被误认为是垃圾邮件。
在需要发邮件的用户下,建立以下文件
vi ~/.muttrc
setenvelope_from=yes
setuse_from=yes
set from=root@https://www.wendangku.net/doc/3c5588159.html,
setrealname="hope"
#如果收到的邮件乱码,设置以下信息
set charset="utf-8"
set rfc2047_parameters=yes
2. mutt发送示例
这里我用自己备份网站的一段代码举例加以说明
mutt 130********@https://www.wendangku.net/doc/3c5588159.html, -s "itdhz数据备份" -a /home/backup/itdhz.sql
或者echo "test" |130********@https://www.wendangku.net/doc/3c5588159.html, -s "itdhz数据备份" -a /home/backup/itdhz.sql
这段代码表示,发送邮件到130********@https://www.wendangku.net/doc/3c5588159.html,这个邮箱,邮件主题是“itdhz数据备份”,邮件内容在/root/readme.txt 中,邮件中包含附件/home/backup/itdhz.sql。如果要发送多
个附件,需要在每个附件前加-a 参数。
三、监控示例
如下是我写的一个用于检查硬盘空间和表空间,并把结果邮件发出的脚本:
[oracle@db1 ~]$ vi /home/oracle/shell/check_space.sh
#/bin/bash
source /home/oracle/.bash_profile
mail_list='user1@https://www.wendangku.net/doc/3c5588159.html,,user2@https://www.wendangku.net/doc/3c5588159.html,'
ip=`/sbin/ifconfig eth0 | grepBcast | cut -d : -f 2 | cut -d " " -f 1`
cd /home/oracle/shell/
echo -e "您好!
$ip统计信息如下:\n\n" >> $temp.txt
echo "硬盘空间统计:" >> $temp.txt
/bin/df -Th>> $temp.txt
echo -e "\n\n\n表空间统计:" >> $temp.txt
sqlplus -s system/orl708sys << EOF >> $temp.txt
set feed off
set lines 400
set pages 900
col 表空间名for a20
selectx.tablespace_name
表空间名,已用_G,已分配_G,已用占已分配的比例,空闲的已分配空间_G,最大可用空间_G,已分配占最大可用比例,>可自动扩展的空间_G
from (select TABLESPACE_NAME,round(sum(BYTES) / 1024 / 1024 / 1024, 2) 已分配_G,
round(sum(MAXBYTES - BYTES) / 1024 / 1024 / 1024,2) 可自动扩展的空间_G,
round(sum(MAXBYTES) / 1024 / 1024 / 1024) 最大可用空间_G,
to_char(round(sum(BYTES) / sum(MAXBYTES) * 100, 2), '990.99') || '%' 已分配占最大可用比例fromdba_data_files
group by TABLESPACE_NAME) x,
(selecta.tablespace_name,
round(a.bytes / 1024 / 1024 / 1024, 2) 已用_G,
round(b.bytes / 1024 / 1024 / 1024, 2) 空闲的已分配空间_G,
to_char(round(a.bytes / (a.bytes + b.bytes) * 100, 2),
'990.99') || '%' 已用占已分配的比例
from sys.sm\$ts_used a, sys.sm\$ts_free b
wherea.tablespace_name = b.tablespace_name) y
wherex.tablespace_name = y.tablespace_name
order by 1;
exit
EOF
mutt -s "$ip统计信息" -- $mail_list< $temp.txt
rm -rf $temp.txt
最后把脚本加入到定时任务中
[oracle@db1 ~]$ crontab -l
30 14 * * 5 /home/oracle/shell/check_space.sh