Linux 发送邮件且发送附件

Linux读取数据库且将结果导出到CSV,并作为附件发送,可用如下办法实现
#! /bin/bash

# 注意字符集一致 否则读取Oracle中文数据会有乱码
export NLS_LANG="AMERICAN_AMERICA.AL32UTF8"

#-------------------------------------------------------------------------------
# define the parameters
#-------------------------------------------------------------------------------
# 以下为数据库连接,可根据自己的数据库环境配置
v_user="a"
v_password="b"
v_orcl_service_name="c"
v_pkg_owner="d"

#-------------------------------------------------------------------------------
# 定义附件路径
attachment=/home/infa/tmp/check_result.csv

# 链接Oracle读取数据
str_batchno=`sqlplus -S $v_user/$v_password@$v_orcl_service_name <<EOF
set pagesize 0;
select t.para_value
from $v_pkg_owner.table_a t;
exit;
EOF`

# 创建CSV文件表头
echo 'TABLE_NAME,CHECK_TYPE,CHECK_RULE,CHECK_RESULT,CHECK_RESULT_DESC,CHECK_COUNT,BATCH_NUM,CHECK_TIME,'>$attachment

# 连接Oracle数据库读取数据并写入CSV文件
str_result=`sqlplus -S $v_user/$v_password@$v_orcl_service_name >>$attachment <<EOF
set pagesize 0
set feedback off
set heading off
set linesize 1000;

select t.table_name || ',' || t.check_type || ',' || t.check_rule || ',' || t.check_result  || ',' || t.check_result_desc  || ',' || t.check_count || ',' || to_char(t.batch_num) || ',' || t.check_time
  from table_b t
 where t.batch_num = $str_batchno
 order by t.check_count
;
exit;
EOF`

# CSV文件中文乱码解决
iconv -f utf8 -t gbk $attachment -o $attachment

mail_subject="Test"
mail_reveiver_list="jason@163.com"
mail_cc_list="jason@126.com"

mail_message="Dear ,
    Test

Thanks!
"

echo "$mail_message" | mailx \
-a ${attachment} \  # 添加附件
-s "$mail_subject" -c $mail_cc_list $mail_reveiver_list # 添加抄送和收件人
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值