使用 Mutt 定时发邮件

今天学习了使用mutt自动发邮件,觉得 mutt发邮件非常便捷, 下面是一个简单的shell脚本,通过mutt 和 crontab 定时发邮件,今天发邮件过程中遇到一个问题,就是邮件内容中含有中文,经mutt发出后,通过foxmail接收邮件后,发现中文变成乱码,而在linux主机上查看文件中的中文能正常显示后来在网上查了下资料,有两个地方需要设置下字符集,第下个是设置 NLS_LANG 环境变量,第二个是配置mutt配置文件 .muttrc 设置字符集,问题解决。

Shell脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/bin/sh  
DD=`date +%Y%m%d%H`
export NLS_LANG=AMERICAN_AMERICA.UTF8
export ORACLE_HOME=/opt/oracle/product/10.2.0/db_1
export PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_SID=devdb
export LOGFILE=/home/oracle/script/tf/devdb.log
if [ $# != 1 ]; then
echo Usage: ./1.sh arg1
echo Examples:
echo 1. To run s_org_ext_x.sql, enter:
echo 'oad.sh s_org_ext >s_org_ext_x.out'
exit 0
fi
cd /home/oracle/script/tf
sqlplus "/as sysdba" << EOF
set time on
set echo on
set linesize 150
col sum(prize_num) format 99999999
col PRIZE_UNIT format a30
col PHONE format a20
col award_time format a30
spool ${LOGFILE}
@$1
spool off
exit
EOF
#EMAIL
. /home/oracle/.muttrc
cat ${LOGFILE} | mutt -s "devdb_again" mailaddr1 mailaddr2 mailaddr3
award.sql

统计所有奖品中奖数量----------
SELECT SUM(prize_num),prize_unit
FROM devdb.tbl_award
GROUP BY prize_unit;

--统计所有实物中奖----------
SELECT ar.sky_id ,ar.phone , ar.lottery_prize_id ,ar.prize_num , ar.prize_unit , ar.award_time
FROM devdb.tbl_award ar , devdb.tbl_prize lp
WHERE ar.lottery_prize_id = lp.lottery_prize_id
AND lp.prize_type = 1 ;

设置配置文件

设置文件/home/posgres/.muttrc 以下变量,如下:

1
2
set charset = "utf-8"  
set locale = "zh_CN.UTF-8"

加入任务计划

1
5,35 09-23 * * * /home/oracle/script/tf/1.sh /home/oracle/script/tf/award.sql >/dev/null 2>&1

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

购买链接:https://item.jd.com/12405774.html

PostgreSQL实战
感谢支持!
0%