linux-sed 应用-批量修改.eml邮件的接收时间
来源:互联网 发布:高分二号数据处理软件 编辑:程序博客网 时间:2024/05/22 01:51
公司之前在用一套在线的CRM系统,现决定停用了,所以之前的客户邮件都需要从CRM系统导出。问题是导出的机制是用邮件客户端重新收一次,这要就导致所有邮件的接收时间变成此次接收时间,而不是邮件原始的收件时间了,这样不利于用户对历史邮件的查找(foxmail 里只显示一个时间,不能显示发送时间,要不然也可以让他们按发送时间排序),于时就想了个办法,把邮件都导成 .eml文件,然后修改它的接收时间为发送时间,这样再次导入邮件客户端就能很好的按时间排序了。
此次用到了 linux 下的 sed 等shell命令,其中正则表达式的调试颇费时间,特别记录了一下:
.eml邮件格式:
Return-Path: <xioh@163.com>Delivered-To: hog@trade.alisoft.com
Received: (qmail 20460 invoked from network);
Received: from unknown (HELO alswm-rule3.hst.jyl.itbu.alidc.net) (172.26.9.127)
by 0 with SMTP; 23 Jul 2011 16:20:13 -0000
Message-ID: <6935039.1311438013166.JavaMail.admin@alswm-rule3.hst.jyl.itbu.alidc.net>
Date: Wed, 20 Jul 2011 09:57:16 +0800 (CST)
From: =?gbk?B?urJz7Q3Lnwuuo=?= <xionsh@163.com>
Reply-To: =?gbk?B?rJzH7Q3Lnwuuo=?= <xiosh@163.com>
To: =?gbk?Q?xuxiaoyan=28=D0=EC=CF=FE=D1=D2=A3=A9?= <xuxin@hoang.com>
Subject: =?gbk?B?1/TFwcu5tcS/qsax0qrH8w==?=
Cc: =?gbk?B?wu2zrA==?= <step@hog.com>,
=?gbk?B?1tzBwbLFILrqycw=?= <zhouliangcai@hog.com>
MIME-Version: 1.0
Content-Type: multipart/mixed;
boundary="----=_Part_1375787_30476309.1311438013163"
------=_Part_1375787_30476309.1311438013163
Content-Type: text/html; charset=gbk
Content-Transfer-Encoding: quoted-printable
<DIV></DIV>
<DIV>=D0=EC=D7=DC3=BA</DIV>
shell 脚本如下: 修改邮件文件的发送时间为接收时间,并将此时间作为邮件名前辍重命名邮件。
#!/bin/bash
export IFS=$'\n'
subdir="modified"
filelist=`ls *.eml`
mkdir $subdir
for filename in $filelist
do
d=`sed -n "1,15s/^\(Date: \)\(.* (CST)\r\)/\2/p" $filename` #取出邮件的发出时间
e=`sed -n "1,15s/^\(From: .*<\)\(.*\)\(>\r.*\)/\2/p" $filename` #取出邮件的发件人
filename2=${filename:0:(${#filename}-4)}
filename2="${filename2:0:64}.eml"
filename2="$subdir/From_$e,`date -d "$d" +%Y-%m-%d_%H:%M`_$filename2"
cp $filename $filename2 #用新文件名copy一份
sed -i "1,15s/\(Received: .*; \)\(.*\)/\1$d/g" $filename2 #修改邮件的接收时间
#echo "cp" "$filename" $filename2
done
参考:
http://sed.sourceforge.net/sed1line_zh-CN.html- linux-sed 应用-批量修改.eml邮件的接收时间
- 发送现有的.eml邮件
- linux批量修改文件时间
- linux批量修改文件时间
- 【Linux】使用sed、awk来完成批量修改配置文件的shell设计
- foxmail自动接收邮件的时间设置
- 修改feedback接收邮件的邮箱
- linux批量修改文件时间的两种方法
- Java直接发送邮件或写好的eml邮件
- linux中批量修改文件名/文件内容(rename sed)
- Linux下Sed的应用
- 用 sed 批量修改文件
- msg邮件转eml邮件
- [sed] linux sed 批量替换字符串
- [sed] linux sed 批量替换字符串
- [sed] linux sed 批量替换字符串
- [sed] linux sed 批量替换字符串-转
- outlook接收邮件时间设置
- C#中的线程同步----Join方法的使用实例
- ASP.NET MVC Pager分页
- android ListView中自定义SimpleAdapter动态添加ratingBar及图片更新
- 深搜(各点值固定)_Poj_1163
- 看透木马
- linux-sed 应用-批量修改.eml邮件的接收时间
- C++_文件读写
- 使用 CD 创建 DVD
- java数据库设计中的14个技巧
- 我的专属QQ 功能篇 (一)
- XP下安装Apache 2.2.3+MySQL 5.0.24+PHP 5.1.6摘要
- 大二小学期《家庭理财系统》软件工程实践总结
- 我的专属QQ 功能篇(二)
- struts 学习笔记之一 Struts配置