一键打开MSG邮件文件:MsgViewer免费跨平台查看与转换工具
【免费下载链接】MsgViewerMsgViewer is email-viewer utility for .msg e-mail messages, implemented in pure Java. MsgViewer works on Windows/Linux/Mac Platforms. Also provides a java api to read mail messges (msg files) programmatically.项目地址: https://gitcode.com/gh_mirrors/ms/MsgViewer
同事用 Outlook 存了一封邮件发给你,扩展名是 .msg。你双击它——Windows 上没装 Outlook 就什么都打不开;换到 Mac 或 Linux,情况更糟,系统根本不知道该拿这个文件怎么办。这种"只有 Outlook 才能读"的文件,在邮件归档、跨部门交接、系统迁移的场景里非常常见,而解开它的最好办法之一,就是MsgViewer:一个纯 Java 编写的免费 MSG 文件查看器,Windows、Linux、macOS 三个平台表现一致,既能图形化打开邮件,也能在命令行里做批量格式转换。
一个 .msg 文件里到底装了什么
.msg 不是普通的文本邮件文件,它是 Outlook 用的复合文档格式,邮件头、正文、收件人列表、附件都打包在同一个二进制文件里,直接打开就是乱码。MsgViewer 的价值在于把这些内容拆给你看:
- 邮件正文:HTML 和纯文本两种形式都能还原显示
- 邮件头:发件人、收件人、抄送、主题、发送时间,一目了然
- 附件:逐个列出,可以直接保存到你指定的目录
- 嵌套邮件:附件里再套 .msg 的情况也能递归解析出来
MsgViewer 能帮你做的三件事
1. 拖进去就能看邮件
不需要记任何命令。启动图形界面后,把 .msg、.eml 或 .mbox 文件直接拖进窗口,正文就渲染出来了。一次拖进多个文件也没问题,还支持拖入一个"文件路径清单"批量打开。界面里可以切换查看邮件的完整属性树(导航视图),逐字段检查原始数据;想留底,菜单里有另存为和打印功能。
日常最顺手的工作流是:邮件归档里翻出几个 .msg → 拖进窗口 → 看正文和附件 → 把附件"另存为"到本地。整个过程不依赖任何邮件客户端。
2. 命令行批量互转三种格式
GUI 适合看单封邮件,批量处理则交给命令行。MsgViewer 的 CLIHelpMSGViewer.java 里定义了全部转换开关,常用的有这几个:
# MSG 转 EML(标准格式,任何邮件客户端都能打开) java -jar msgviewer.jar -msg2eml mail.msg # EML 转 MSG java -jar msgviewer.jar -eml2msg mail.eml # MSG 转 MBOX(多个邮件存进一个归档文件) java -jar msgviewer.jar -msg2mbox mail.msg再加两个可选参数就能省不少事:-t把转换结果输出到系统临时目录,-o转换完直接用系统关联程序打开。另外还支持-oft2eml,把 Outlook 模板文件(.oft)也转成 .eml。
需要留个心眼的是:mbox 转 msg(-mbox2msg)官方标注为预发布状态,稳定性不如其他方向,正式归档场景建议以 msg 转 eml/mbox 为主。
3. 用 Java API 在自己的程序里读邮件
如果你的需求不是"看",而是"处理"——比如写脚本统计邮件、做数据迁移——项目里独立出的 msgparser 模块 提供了一组干净的 Java API。核心入口是 MsgParser.java:
MsgParser parser = new MsgParser(Paths.get("mail.msg")); Message message = parser.parseMsg(); String subject = message.getSubject(); List<Attachment> files = message.getAttachments();解析结果是一个结构化的 Message 对象,发件人、收件人(含 TO/CC/BCC 分类)、正文、附件都能按字段取出来,附件还能继续保存为文件。依赖它只需要引入 msgparser 这一个模块,不用把整个 GUI 带进你的项目。
三步跑起来
项目基于 Maven 构建,要求 JDK 17 以上:
git clone https://gitcode.com/gh_mirrors/ms/MsgViewer cd MsgViewer ./mvnw package构建产物是一个"胖 jar"(uber-jar),位于MSGViewer/target/msgviewer.jar,之后运行就一句话:
java -jar MSGViewer/target/msgviewer.jar # 打开图形界面 java -jar MSGViewer/target/msgviewer.jar -h # 查看全部命令行参数macOS 用户如果不想自己编译,osx-packager/目录下还提供了打包 .app 的脚本 package-app.sh,跑完就能得到一个像原生应用一样的可执行程序。
用之前值得知道的几个细节
- 界面语言:默认跟随系统语言,也可以手动改。翻译文件放在
~/.MSGViewer/translations/目录下;按F11可在英文和当前显示语言之间快速切换,按F12打开翻译编辑窗口,改翻译不需要重新编译。 - 无菜单只读模式:加
-hidemenubar参数启动后,界面只剩"看邮件"这一个功能,不能另存、不能打印,适合放在公共终端这类不希望用户动文件的场合。 - 大文件转换:处理超过 10MB 的大邮件或批量任务时,优先用命令行模式,必要时给 JVM 加内存参数,例如
java -Xmx512m -jar msgviewer.jar -msg2eml bigmail.msg。 - 命令行直接带文件:启动 GUI 时把 .msg/.eml/.mbox 路径作为参数跟在后面,窗口一出来就已经打开这些邮件了,省掉手动选择。
项目内部是怎么分工的
代码分成三层,各管一件事(见 README.md):
- MSGViewer 模块(MSGViewer/src/main/java/net/sourceforge/MSGViewer/):图形界面、消息导航树、格式转换器(Msg2Eml、Eml2Msg 等每个方向一个类)
- msgparser 模块(msgparser/src/main/java/com/auxilii/msgparser/):底层的 .msg 二进制解析,基于 Apache POI 读取复合文档结构
- FrameWorkMinimized 模块(FrameWorkMinimized/):通用界面框架,提供配置管理、国际化、表格控件等基础设施
这种分法的实际好处是:你要做集成开发就只依赖 msgparser,改界面行为去 MSGViewer 模块找入口,互不干扰。
从一封打不开的邮件开始
下一次收到 .msg 附件,不用再去装 Outlook。把项目克隆下来编译一次,msgviewer.jar就常驻可用了——平时拖文件进去看,需要归档时跑一条-msg2eml转换命令。先试着对你手头任意一封 .msg 跑一次java -jar MSGViewer/target/msgviewer.jar -msg2eml 你的文件.msg,看看转换结果,你就知道这个工具值不值得留在工具箱里了。
【免费下载链接】MsgViewerMsgViewer is email-viewer utility for .msg e-mail messages, implemented in pure Java. MsgViewer works on Windows/Linux/Mac Platforms. Also provides a java api to read mail messges (msg files) programmatically.项目地址: https://gitcode.com/gh_mirrors/ms/MsgViewer
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考