提取OutLook邮件里面的邮件头信息(发件人、收件人)

提取OutLook邮件里面的邮件头信息(发件人、收件人)

因为之前发email的时候,被win10的惊喜更新砸中,而我也不小心点了一下,所以控制台的发送日志全没了,面对着已经发了的1000多个邮件,也不能根据最后一个发的人做分割(因为有可能,因为网络原因,有的人发的会靠后一点,作为一个程序员,怎么可能一封一封的比对,这辈子都不可能一封一封的比对的)

其实主要是借助工具,代码层面相信大家都会

首先说明:

1、outlook可以直接拖拽出来邮件文件,但是是.msg格式的,我尝试了一下,也能读取到,虽然读到一大堆乱七八糟的乱码信息,但是主要信息还是清晰可见的,邮件主题还是非常清晰的,但是对于邮件头,虽然看起来很明显,但是正则匹配不到想要的这些,我感觉这就是msg的文本格式问题,提取不出来收件信息

2、主要思路是,通过使用工具,把邮件批量导出为.txt文本格式,这样就一点问题都没有,思路理清楚了开始行动

使用工具

一封或少量邮件可以不使用工具,直接在,outlook中上方点击“文件”–“另存为”然后选择txt格式就ok了,但是大量几百封上千封这样子估计手都要掉了,所以使用工具 搜索“KUTOOLS for outlook”,我这里就不骗大家东西了啊,自己去搜索,搜不到私聊我,我发给你,搜索下载,虽然只有90天免费使用,但是一天就够了~

安装完成后重启一下outlook,就可以了,上面就会出现KUTOOLS,然后大概第三栏有个存为其他格式,好,先不要点击,先选中要另存的文件(然后再点击这个另存为)选择txt,看需求是否选择邮件主题(这些操作步骤,大家先看看,如果不会就留言,如果留言多了我到时候就更新一下详细的步骤,或者1对1解答)

这个时候已经全部导出到一个文件夹里了,而且全是txt文本

编写代码

那个。。。。我刚学习Python,虽然也是刚学习Java,所以两个混着来了,但是思路是绝对清晰地。。。。

先读取所有文件—然后正则匹配,我不用Python写的原因是因为,我还不会Python的io。。。。(┬_┬)

package IOexp;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReadOutlookReceiver { 

    public static void main(String[] args) { 
        try { 
            String s = "";
            File file = new File("d:/文件夹路径");
            // 读取文件夹内所有的文件
            File[] files = file.listFiles();
            int i = 0;
            List<String> list = new ArrayList<>();
            for (File file1 : files) { 
                System.out.println(file1.getName());
                // 读取每一个TXT文件的信息
                BufferedReader br = new BufferedReader(new FileReader("D:\\文件夹路径" + file1.getName()));
                String s1 = null;
                // 限制为20 是提高一点点效率,因为我只需要邮箱
                for (int j = 0; j < 20; j++) { 
                    // 一行一行读取
                    s = br.readLine();
                    s1 = String.valueOf(s);
                    // 正则匹配读取qq邮箱
                    Pattern pattern = Pattern.compile("[1-9][0-9]{4,}@qq.com");
                    Matcher matcher = pattern.matcher(s1);
                    if (matcher.find()) { 
                        String qq = String.valueOf(matcher.group().substring(0, matcher.group().indexOf("@")));
                        // 把读取到的qq放到list里面,根据需要取字符串qq还是普通qq号
                        list.add("\"" + qq + "\"");
// list.add(qq);
                        System.out.println(matcher.group());
                    }
                }
                i++;
                br.close();
            }
            // 打印总共堵了多少个文件
            System.out.println(i);
            // 打印list内容
            System.out.println(list);
            // 打印list的大小,比对i的大小,从而对比数量是否正确
            System.out.println(list.size());
        } catch (Exception e) { 
            e.printStackTrace();
        }
    }
}

然后。。。把list复制粘贴到Python中去,如果你会Python读取文件,就可以直接用这个list了。。。。然后list与list之间对比一哈,就可以看出差别了~

本文主要是告知有这样一个工具可以使用,可以换种思路,提取到的.msg文件无法使用正则匹配,就可以转为文本进行匹配,从而比较差距

    原文作者:Forever August
    原文地址: https://blog.csdn.net/weixin_43791688/article/details/103835927
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞