一键打开MSG邮件文件:MsgViewer免费跨平台查看与转换工具
2026/8/21 18:41:59 网站建设 项目流程

一键打开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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询