#!/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
?