将 Outlook 电子邮件连同附件转换为 PDF、DOC、TIFF、HTML、EML。服务器版。
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Outlook Converter Pro X 是一款服务器端 SDK,可读取 PST、OST、MSG 和 EML 邮箱,并将邮件转换为 PDF、PDF/A、DOC、RTF、TXT、HTML、TIFF 和 JPEG — 附件会被渲染为相同的目标格式并合并到一个输出文件中,服务器上无需安装 Microsoft Outlook。它以无头模式运行:没有图形界面、没有对话框、没有弹窗。Total Outlook Converter Pro X 同时提供命令行二进制程序和 ActiveX/COM 接口,可直接接入 ASP、PHP、.NET、Python、Ruby、Java 以及任何支持 COM 的后端。
Pro 版本与普通版 Outlook Converter X 的区别在于 -docs 开关。启用 -docs 后,每一个受支持的附件 — Word、Excel、PowerPoint、图片、PDF — 都会被转换为目标格式,并合并到邮件 PDF 中,或作为单独的文档保存在旁边。收件人打开一个文件,就能按阅读顺序看到邮件正文加上每一个附件。源格式:
-sub 遍历 PST 层级;使用 -kfs 在输出端镜像文件夹树
除附件转换之外,Total Outlook Converter Pro X 还覆盖完整的电子取证和档案保留场景:PDF/A 输出(-pdfa)、使用 X.509 证书进行数字签名(-PFXFile/-PFXPass)、保留 RFC-822 传输头(-rfcheaders)、附件元数据索引(-iattach)、Bates 风格的页眉/页脚加盖并在邮件与附件之间连续编号、按权限标志加密的密码保护 PDF,以及远程图片屏蔽(-dinet),让转换器永远不会因为等待跟踪像素而卡住。
高速转换与批处理让整个流程简单且不枯燥 — 一夜之间处理数万封带附件的邮件是常态。免费试用(30 天,无任何限制),亲自验证它物有所值。
当前支持的部分文件格式转换:
|
|
|
string src = @"C:\Mail\Archive.pst";
string dest = @"C:\out\";
var cnv = new OutlookConverterX();
cnv.Convert(src, dest, "-cPDF -docs -sub -kfs -log c:\\out\\Outlook.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\OutlookConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.pst";
var outPath = $@"{assemblyDirectoryPath}\out\";
startInfo.FileName = executablePath;
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"\"{srcPath}\" \"{outPath}\" -cPDF -docs -sub -kfs";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
sbLogs.AppendLine("Conversion complete.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("OutlookConverterPro.OutlookConverterX")
C.Convert "c:\Mail\Archive.pst", "c:\out\", "-cPDF -docs -sub -kfs -log c:\Outlook.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("OutlookConverterPro.OutlookConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=mail.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\sample.msg", "C:\www\ASP", "-cpdf -docs -log c:\html.log")
set C = nothing
$src="C:\\Mail\\Archive.pst";
$dest="C:\\out\\";
$c= new COM("OutlookConverterPro.OutlookConverterX");
$c->convert($src,$dest, "-cPDF -docs -sub -kfs -log c:\\Outlook.log");
echo $c->ErrorMessage == "" ? "OK" : "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('OutlookConverterPro.OutlookConverterX')
src = "C:\\Mail\\Archive.pst"
dest = "C:\\out\\"
c.convert(src, dest, "-cPDF -docs -sub -kfs -log c:\\out\\Outlook.log")
if c.ErrorMessage != ""
puts c.ErrorMessage
end
import win32com.client
c = win32com.client.Dispatch("OutlookConverterPro.OutlookConverterX")
src = "C:\\Mail\\Archive.pst"
dest = "C:\\out\\"
c.convert(src, dest, "-cPDF -docs -sub -kfs -log c:\\out\\Outlook.log")
if c.ErrorMessage:
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('OutlookConverterPro.OutlookConverterX');
c.Convert('c:\Mail\Archive.pst', 'c:\out\', '-cPDF -docs -sub -kfs -log c:\out\Outlook.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("OutlookConverterPro.OutlookConverterX");
c.Convert("C:\\Mail\\Archive.pst", "C:\\out\\", "-cPDF -docs -sub -kfs");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\Mail\\Archive.pst"; my $dest = "C:\\out\\"; my $c = CreateObject Win32::OLE 'OutlookConverterPro.OutlookConverterX'; $c->convert($src, $dest, "-cPDF -docs -sub -kfs -log c:\\out\\Outlook.log"); print $c->ErrorMessage if $c->ErrorMessage ne "";
"在我需要翻出一位 8 年前离职员工的往来邮件时,你们的程序救了我。我们是一个只有大约 500 名学生的小型 K-12 学区,因为一项法律调查收到了公共信息查询请求。程序在每批 50 到 100 封邮件结束时通常会报一个 Windows 内存错误,但它能跨过这些错误继续工作,让我在不到一天内就完成了任务。谢谢!"
Larry Gohmert
Yorktown ISD
"我们为外部律师做电子取证。客户给我们发 10-50 GB 的 PST 保管人文件;我们的流水线会把每个 PST 变成每个案件一份 PDF,所有邮件加上所有已转换的附件按阅读顺序排列,并保留 RFC 头。Total Outlook Converter Pro X 配合 -docs -iattach -rfcheaders -sub -kfs 是核心引擎。在我们的硬件上每小时大约处理 6,000 封邮件,包含 DOCX/XLSX 附件渲染。在生产环境跑了五年,没有出过可以归咎于转换器的故障。"
Henrik J.
Senior Backend Developer at a legal-tech vendor
"患者通信归档必须以带 X.509 数字签名的 PDF/A 格式进入我们的文档管理系统 — 这是 HIPAA 监管链的要求。-pdfa 加 -PFXFile/-PFXPass 加 -SignLoc/-SignCon/-SignRes 一次二进制调用就覆盖了完整的签名场景。我们替换掉了原来需要在每台转换虚拟机上安装桌面 Outlook 的 Outlook-Interop 流水线。在 Windows Server Core 上无头运行,没有 Outlook,也没有意外。"
Renata B.
DevOps Engineer at a healthcare records platform
"我们以 Royalty-Free 许可把 Total Outlook Converter Pro X 集成进自家的合规归档产品。一次性按项目付费的费用只是 Aspose.Email 加 Aspose.Words 加 Aspose.PDF 整个组合费用的一小部分。我们的安装程序会发布并注册 ActiveX,应用直接调用,最终用户只看到我们自己的 UI。32 位 ActiveX 限制让我们多花了几天调整流水线,但当我们询问解决方案时,技术支持响应很及时。"
Daichi M.
Independent Software Vendor
"客户把离职员工的 Exchange 导出 PST 寄给我们。我们的工作流水线会把每个邮箱文件夹合并成每个保管人一份带 Bates 印章的 PDF。-sub -kfs 在输出端保留 Outlook 文件夹层级,-HeadText/-FootText 在邮件页和附件页之间应用案件标签和连续分页。多次运行结果一致,这对法律审阅非常重要。CLI 稳定、文档完善,OST 支持在原始 Exchange 配置已经丢失的案子上救了我们的命。"
Aleksandra W.
Lead .NET Developer at a corporate-archive provider
Total Outlook Converter Pro X 附带 OutlookConverterX.exe,这是一个可以从脚本、计划任务、电子证据开示管道或任何后端服务驱动的控制台二进制程序。标志集与 GUI 版本一致;完整参考请参阅命令行文档。Pro X 二进制程序与标准 Outlook Converter 的不同之处在于附件处理:-docs 开关告诉转换器将附加的 Word、Excel、图像和 PDF 文件渲染为目标格式,并将它们拼接到与电子邮件正文相同的输出文档中。下面的配方依赖于该功能。
标志性的 Pro 工作流。每条邮件都成为单个 PDF,其中包含电子邮件标头、正文和每个内联渲染的附件 —— 不在边车文件夹中留下孤立文件。
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\out\" -cPDF -docs -attach -images
生产 PST 从来都不是平面的。-sub 下降到每个 Outlook 子文件夹;-kfs 在磁盘上重新创建相同的树,因此收件箱、已发送和自定义文件夹在输出中保持分离。
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\out\Archive\" -cPDF -docs -sub -kfs -template "[date:yyyy-mm-dd]_[sender]_[subject]"
审阅者想要附件的清单,而不仅仅是电子邮件正文。-iattach 将附件元数据写入文档,-uattach 打开压缩的附件,因此其内容也被转换,-rfcheaders 保留完整的 RFC-822 传输标头以确保监管链。
OutlookConverterX.exe "C:\Cases\Custodian01.pst" "C:\review\Custodian01\" -cPDF -docs -attach -iattach -uattach -rfcheaders -sub -kfs
当保管人由工作进程加载时,队列以文本文件形式到达,每行一个 PST。-list 直接消耗该文件,因此您不必将数百个路径编码到命令行中。
OutlookConverterX.exe -list "C:\queues\custodians.txt" "C:\review\" -cPDF -docs -sub -kfs -fo
法律审查要求在每页上进行顺序编号,包括来自转换附件的页面。页眉/页脚标志作为整体应用于合并的 PDF,因此单个 [page] 标记跨电子邮件及其渲染的文档为您提供连续编号。
OutlookConverterX.exe "C:\Cases\Matter-2026-014.pst" "C:\review\Matter-2026-014\" -cPDF -docs -attach -HeadText "MATTER-2026-014 [date]" -HeadAlign right -FootText "Bates [page]" -FootAlign center
将转换的邮箱发送给外部律师的标准做法:每页可见标签、锁定编辑/打印权限的所有者密码以及完全控制文件打开的用户密码。
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\out\" -cPDF -docs -HeadText "CONFIDENTIAL — ATTORNEY WORK PRODUCT" -HeadAlign center -mp "owner-pwd" -up "user-pwd" -perm Copy
用 Modify、Annotation、FormFill、HighResPrint 的任意组合替换 Copy,以准确授予收件人需要的权限。
需要符合 ISO 19005 PDF/A 文件且具有适当创作元数据的记录管理工作流。无论源是单个 PST 还是 MSG/EML 文件夹,相同的标志都有效。
OutlookConverterX.exe "C:\Mail\*.pst" "C:\archive\" -cPDF -docs -pdfa -PDFAuthor "Acme Records" -PDFTitle "2025 Q4 Mail Archive" -PDFSubject "Retention class 7" -sub
对于需要在每个交付文件上进行加密签名的受监管行业。将二进制程序指向 PFX 证书并提供其密码短语;每个电子邮件 PDF 在写入时都会被签名。
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\signed\" -cPDF -docs -PFXFile "C:\certs\acme.pfx" -PFXPass "cert-pass" -SignLoc "Boston, MA" -SignCon "[email protected]" -SignRes "Records retention"
某些审查平台希望电子邮件作为一个 PDF,每个附件作为自己的文件,按名称链接。-sdocs 将转换后的附件作为独立文档写入,而不是合并它们;-atemplate 控制如何命名这些伴随文件。
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\out\" -cPDF -docs -sdocs -attach -template "[mail_index]_[subject]" -atemplate "[mail]_att[attach_index]_[attach]"
一旦 OutlookConverterX.exe 作为服务或计划作业运行,日志是唯一的反馈通道。-verbosity detail 每条邮件写一行;-logmode append 在多次运行之间保留历史;-dinet 阻止远程图像加载,因此转换器永远不会因等待跟踪像素而挂起。
OutlookConverterX.exe "C:\Mail\*.pst" "C:\out\" -cPDF -docs -sub -kfs -log "C:\logs\outlookconv.log" -verbosity detail -logmode append -dinet -fo
-docs 附件转换引擎。启用 -docs 后,转换器会把每个受支持的附件(Word、Excel、PowerPoint、图片、PDF)渲染为目标格式,并将其合并进与邮件正文相同的输出文档,或作为独立文档保存在旁边(-sdocs)。普通版 Outlook Converter X 只会把附件按其原始文件类型保存在邮件旁边。Pro 版适合电子取证、档案保留以及任何需要每条邮件线程交付一份独立 PDF 的工作流程。new COM("OutlookConverterPro.OutlookConverterX");.NET 中(注册 Pro ActiveX 后)new OutlookConverterX();Python 中 win32com.client.Dispatch("OutlookConverterPro.OutlookConverterX");Ruby 中 WIN32OLE.new('OutlookConverterPro.OutlookConverterX')。此外,OutlookConverterX.exe 命令行二进制可以在任意进程、调度程序或 shell 脚本中调用。-sub 即可深入每个 Outlook 子文件夹(收件箱、已发送邮件、草稿、自定义文件夹)。再加上 -kfs,输出端会重建相同的文件夹树,而不是把所有邮件压扁到一个目录。配合 -template "[date:yyyy-mm-dd]_[sender]_[subject]",可以把一个 10GB 的 PST 转化成命名清晰、结构整洁、可立即审阅或归档的 PDF 文件夹树。-pdfa 满足 ISO 19005 (PDF/A) 合规要求,再加 -PFXFile "C:\certs\acme.pfx" -PFXPass "cert-pwd" 用组织 X.509 证书进行数字签名。-SignLoc、-SignCon 和 -SignRes 用于附加签名元数据。配合 -rfcheaders 保留传输头以及 -iattach 索引附件,即可覆盖受监管行业完整的档案保留场景。-IgnoreInvalidSource 可以避免单个损坏源文件导致整个批次中止。-dinet 阻止远程图片加载,防止转换器被 HTML 邮件中嵌入的跟踪像素卡住。-list 队列文件输入加上 -log -verbosity detail,会为每条邮件和每个附件输出一行结构化日志,便于日志聚合系统接入。