#!/bin/bash

 

# 检查是否提供了CSV文件名

if [ $# -ne 1 ]; then

    echo "用法: $0 <csv文件>"

    exit 1

fi

csv_file="$1"

 

# 暂存用户和mid

output_csv="user_mid.csv"

 

# 抄送人优化

extract_value() {

    [[ "$1" = *,* ]] || return # 无逗号直接返回空

    local temp="${1%,*}" # 移除最后一个逗号及之后的内容

    echo "${temp##*:}" # 提取最后一个冒号后面的内容

    }

 

# 优化文件内部标题

mail_out="mail_out.txt"

echo "发信人;邮件主题;收信人;抄送人;邮件时间" > $mail_out

 

# 邮箱域名,根据实际去修改。不要把@符号去除

domain="@a.cn"

 

# 检查文件是否存在

if [ ! -f "$csv_file" ]; then

    echo "错误: 文件 $csv_file 不存在"

    exit 1

fi

 

# 读取CSV文件并输出第一列,获取邮件的mid值

while IFS= read -r line || [ -n "$line" ]; do

    # 提取第一列(逗号分隔)

    col=$(echo "$line" | awk -F, '{print $1}')

    mail=($(/home/coremail/bin/userutil --list-msg $col$domain fid=3 | grep -v total | awk '{print $2}'))

    #/home/coremail/bin/userutil --list-msg $col$domain fid=3

        #fid=1 表示收件箱文件夹

        #fid=2 表示草稿箱文件夹

        #fid=3 表示已发送文件夹

        #fid=5 表示垃圾邮件文件夹

        #fid=6 表示病毒文件夹

    for value in "${mail[@]}"; do

    echo "$col,$value" >> "$output_csv"

done

done < "$csv_file"

 

# 导出发信人,主题,收信人和抄送人

while IFS= read -r line || [ -n "$line" ]; do

    user=$(echo "$line" | awk -F, '{print $1}')

    mid=$(echo "$line" | awk -F, '{print $2}')

    /home/coremail/bin/userutil --display-msginfo $user$domain $mid > mail_msg.txt

    mail_subject=$(grep "Subject:" mail_msg.txt | awk -F'Subject: ' '{print $2}')

    mail_to=$(grep "To:" mail_msg.txt | awk -F'To: ' '{print $2}')

    mail_cc1=$(grep "retolist=" mail_msg.txt | awk -F'STR]:' '{print $2}')

    mail_cc=$(extract_value "$mail_cc1") 

    mail_time=$(grep "RecTime" mail_msg.txt | awk -F'Time: ' '{print $2}')

    echo "$user$domain;$mail_subject;$mail_to;$mail_cc;$mail_time" >> $mail_out

done < "$output_csv"

 

# 优化生成文件

sed -i "s/,/;/g" $mail_out

sed -i "s/;/,/g" $mail_out

mv $mail_out mail_out.csv

 

echo "生成的发信清单文件在脚本所在目录的mail_out.csv,请查收!!"

# 删除暂存用户和mid

rm -f $output_csv

rm -f mail_msg.txt

rm -f $mail_out

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913529.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913529.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913529.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 本地安装部署 Apache Druid

在 Windows 本地安装部署 Apache Druid 可以按照以下步骤进行。由于 Druid 是基于 Java 的应用&#xff0c;需要先准备好 Java 环境&#xff0c;然后下载配置 Druid。 一、环境准备 1. 安装 Java 确保已安装 Java 8 或以上版本&#xff08;推荐 Java 11&#xff09;&#xf…

PY32F002A单片机 低成本控制器解决方案,提供多种封装

PY32F002A 是一款32 位 ARM Cortex-M0 内核的高性价比单片机。PY32F002A单片机提供了多种封装类型&#xff0c;最大有18个IO&#xff0c;芯片采用32位ARM内核&#xff0c;M0架构&#xff0c;最高工作频率24MHz。flash 存储器20KByte,SRAM 3K。最大支持9路12位ADC&#xff0c;5个…

区块链技术在物联网(IoT)中的核心应用场景

以下是区块链技术在物联网&#xff08;IoT&#xff09;中的核心应用场景及具体实例&#xff0c;涵盖技术原理、实施架构和实际价值&#xff1a;一、区块链解决物联网的四大核心问题痛点区块链方案技术实现设备身份伪造唯一数字身份链上注册非对称加密生成设备DID&#xff08;去…

PostgreSQL DELETE 语句详解

PostgreSQL DELETE 语句详解 在数据库管理中,删除数据是日常操作中不可或缺的一环。PostgreSQL 是一款功能强大的开源关系型数据库管理系统,其 DELETE 语句在数据删除方面表现出色。本文将详细解析 PostgreSQL 的 DELETE 语句,包括其语法、使用场景和注意事项。 1. DELETE…

传统报警难题频现,安全运行隐患重重

在企业生产运营与安全管理过程中&#xff0c;报警系统作为保障安全运行的重要防线&#xff0c;其作用不言而喻。然而&#xff0c;传统报警系统在实际应用中却难题频现&#xff0c;不仅无法及时、准确地预警潜在风险&#xff0c;还为企业的安全运行埋下了重重隐患。青岛国瑞信息…

WPF学习笔记(23)Window、Page与Frame、ViewBox

Window、Page与Frame一、Window1.模态窗口与非模态窗口2.Window类3.示例二、Page1.概述2.Page类三、Frame1.概述2.Frame类3.示例四、ViewBox1. 概述2. 详解3. 示例总结一、Window 1.模态窗口与非模态窗口 2.Window类 属性说 明Title获取或设置窗口的标题。lcon设获取或设置窗…

设计模式---观察者模式(发布-订阅模式)

设计模式—观察者模式(发布-订阅模式) 一、简介 发布-订阅模式是一种消息传递模式&#xff0c;用于实现对象间的一对多依赖关系。在这种模式中&#xff1a; 发布者&#xff08;Publisher&#xff09;不直接向订阅者&#xff08;Subscriber&#xff09;发送消息发布者和订阅者…

一文讲清楚React Fiber

文章目录一文讲清楚React Fiber1. 基础概念1.1浏览器刷新率&#xff08;帧&#xff09;1.2 JS执行栈1.3 时间分片1.4 链表2. React Fiber是如何实现更新过程控制2.1 任务拆分2.2挂起、恢复、终止2.2.1 挂起2.2.2 恢复2.2.3 终止2.3 任务具备优先级一文讲清楚React Fiber 1. 基…

(3)机器学习小白入门 YOLOv: 解锁图片分类新技能

(1)机器学习小白入门YOLOv &#xff1a;从概念到实践 (2)机器学习小白入门 YOLOv&#xff1a;从模块优化到工程部署 (3)机器学习小白入门 YOLOv&#xff1a; 解锁图片分类新技能 前言 YOLOv 算法通常被用于目标检测任务&#xff0c;但通过对其进行适当的调整和改造&#xff0c…

主机安全-开源HIDS字节跳动Elkeid使用

安装好elkeid后就开始接入主机和k8s集群&#xff0c;安装文档-----主机安全-开源HIDS字节跳动Elkeid安装-CSDN博客 1、接入主机 在系统管理-----安装配置-----复制命令------在目标机器上执行这段命令 执行成功后主机就会自动接入 2、接入k8s集群 在k8s主机上执行脚本&#x…

【vue】用conda配置nodejs,一键开通模版使用权

特此鸣谢我的好同学重中之重的特级教学&#xff0c;非常之好用一、conda环境下载安装二、创建包含nodejs的conda环境创建一个新环境&#xff1a;conda create -n 【自定义环境名字】 python3.9 conda create -n my_nodejs_env python3.9激活新环境&#xff1a;conda activate【…

深度学习--tensor(创建、属性)

一、torch概念1.1简介pytorch简称torch&#xff0c;意为深度学习框架。它使用张量&#xff08;tensor&#xff09;来表示数据&#xff0c;可以轻松地处理大规模数据集&#xff0c;且可以在GPU上加速。pytorch基本功能&#xff1a;自动微分、自动求导等。1.2安装官网获得下载命令…

【内存】Linux 内核优化实战 - net.ipv4.tcp_max_tw_buckets

目录net.ipv4.tcp_max_tw_buckets 详解一、基本概念二、核心作用三、默认值四、调整场景需增大参数的场景需减小参数的场景五、查看与修改方法1. 查看当前值2. 临时修改&#xff08;重启失效&#xff09;3. 永久修改&#xff08;重启生效&#xff09;六、注意事项总结net.ipv4.…

短剧系统开发定制全流程解析:从需求分析到上线运营

一、短剧行业现状与系统开发价值短剧作为一种新兴的内容形态&#xff0c;近年来呈现爆发式增长态势。2023年中国短剧市场规模已突破300亿元&#xff0c;用户规模超过5亿&#xff0c;这种以"快节奏、强剧情、低成本"为特点的内容形式正在重塑数字娱乐产业格局。短剧系…

各服务器厂商调整BIOS睿频教程

调整BIOS睿频选项汇总&#xff1a;1、华为服务器&#xff1a;2、华为服务器V53、浪潮服务器4、浪潮服务器M45、 曙光服务器5.1 曙光I620-G205.2 曙光I620-G306、联想服务器&#xff08;650系列&#xff09;650系列的服务器对照截图信息修改对应项&#xff0c;修改为截图里的选项…

PyTorch笔记3----------统计学相关函数

1.基础函数 import torch a torch.rand(2,2) print("a:\n",a) print(########################) print("平均值:\n",torch.mean(a,dim0)) print("总和:\n",torch.sum(a,dim0)) print("所有元素的积:\n",torch.prod(a,dim0)) print(&…

【Prometheus】通过tar包部署单机版Prometheus 和 Pushgateway

在ECS&#xff08;Elastic Compute Service&#xff09;机器上通过tar包部署 Prometheus 和 Pushgateway&#xff0c;并配置 Prometheus 采集 Pushgateway 的数据&#xff0c;是一个常见的监控部署任务。以下是详细的步骤说明&#xff1a;&#x1f9e9; 环境准备 操作系统&…

Matlab 频谱分析 (Spectral Analysis)

文章目录1. 信号预处理 - 去直流分量2. 快速傅里叶变换&#xff08;FFT&#xff09;3. 功率谱密度&#xff08;PSD&#xff09;计算4. 主频率检测5. 谱质心计算6. 对数谱显示完整的信号处理流程实际应用示例1. 信号预处理 - 去直流分量 data data - mean(data);数学原理&…

【实时Linux实战系列】实时以太网与 TSN 基础

在实时系统中&#xff0c;网络通信的实时性和可靠性是确保系统正常运行的关键。实时以太网和时间敏感网络&#xff08;TSN&#xff09;技术为实时数据传输提供了强大的支持。TSN通过一系列协议和机制&#xff0c;确保数据能够在预定的时间内可靠传输&#xff0c;满足工业自动化…

茶颜悦色JAVA面试分享

1、自我介绍项目2、设计一个爆款饮品秒杀系统&#xff1a;如何解决“幽兰拿铁”上新时的瞬时10万QPS&#xff1f;从缓存、限流、库存扣减到订单创建的全流程设计。3、订单超市未支付自动取消&#xff1a;如何实现高精度&#xff08;30分钟精确到秒&#xff09;且低延迟的订单状…