Convert PST/OST/MSG/EML to PDF, PDF/A, DOC, TIFF on Windows servers — with attachments rendered and merged into the same output, without Microsoft Outlook.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016 / 2019/2022 Server
and
Docker / Citrix / Wine
Total Outlook Converter Pro X is a server-side SDK that reads PST, OST, MSG, and EML mailboxes and converts emails to PDF, PDF/A, DOC, RTF, TXT, HTML, TIFF, and JPEG — with attachments rendered to the same target format and merged into one output file, without Microsoft Outlook on the server. It runs headless: no GUI, no dialogs, no popups. Total Outlook Converter Pro X ships with both a command-line binary and an ActiveX/COM interface, so it drops into ASP, PHP, .NET, Python, Ruby, Java, and any other COM-aware backend.
What makes the Pro variant different from the regular Outlook Converter X is the -docs switch. With -docs on, every supported attachment — Word, Excel, PowerPoint, images, PDFs — is converted to the target format and either merged into the message PDF or saved as separate documents alongside it. The recipient opens one file and sees the email body plus every attachment in reading order. Source formats:
-sub; mirrors folder tree on output with -kfs
Beyond attachment conversion, Total Outlook Converter Pro X covers the full e-discovery and records-retention scenario: PDF/A output (-pdfa), digital signing with X.509 certificates (-PFXFile/-PFXPass), RFC-822 transport-header preservation (-rfcheaders), attachment metadata indexing (-iattach), Bates-style header/footer stamping with continuous page numbering across email and attachments, password-protected PDFs with per-permission flags, and remote-image blocking (-dinet) so the converter never hangs waiting on a tracking pixel.
High converting speed and batch conversions result in a simple and boredom-free process — tens of thousands of messages with attachments per overnight run is normal. Try it for free (30 days trial period, no limitations) and find out that it is really worth its money.
Some of the currently supported file format conversions:
|
|
|
(includes 30 day FREE trial)
(only $1100.00)
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 "";
"Your program came to my rescue when I had to dig out emails to and from an employee who left our district 8 years ago. We are a small K-12 district of about 500 students and received a public information request as part of a legal investigation. The program did usually give a Windows memory error at the end of every batch of 50 to 100 messages, but it kept working through the errors and allowed me to get the job done in less than a day. Thank you!"
Larry Gohmert
Yorktown ISD
"We do e-discovery for outside counsel. Customers send us 10-50 GB PST custodian files; our pipeline turns each PST into one PDF per matter, every email plus every converted attachment in reading order with RFC headers preserved. Total Outlook Converter Pro X with -docs -iattach -rfcheaders -sub -kfs is the engine. Around 6,000 messages per hour on our hardware including DOCX/XLSX attachment rendering. Five years in production, no failures we can blame on the converter."
Henrik J.
Senior Backend Developer at a legal-tech vendor
"Patient communication archives have to land in our document-management system as PDF/A with X.509 digital signatures — HIPAA chain-of-custody requirement. -pdfa plus -PFXFile/-PFXPass plus -SignLoc/-SignCon/-SignRes covers the whole signing scenario in one binary call. We replaced an Outlook-Interop pipeline that needed a desktop Outlook install on every conversion VM. Headless on Windows Server Core, no Outlook, no surprises."
Renata B.
DevOps Engineer at a healthcare records platform
"Bundled Total Outlook Converter Pro X into our compliance-archiving product under the Royalty-Free License. The one-time per-project fee was a fraction of what Aspose.Email plus Aspose.Words plus Aspose.PDF would have cost as a stack. Our installer ships and registers the ActiveX, our app calls it directly, end users see only our UI. The 32-bit ActiveX limitation cost us a couple of days of pipeline rework, but support was responsive when we asked about workarounds."
Daichi M.
Independent Software Vendor
"Customers ship us Exchange-export PSTs from departing employees. Our worker pipeline merges each mailbox folder into one Bates-stamped PDF per custodian. -sub -kfs preserves the Outlook folder hierarchy on the output side, -HeadText/-FootText applies the case label and continuous pagination across both message and attachment pages. Deterministic across runs, which matters for legal review. The CLI is stable and well-documented, OST support saved us on the cases where the original Exchange profile was already gone."
Aleksandra W.
Lead .NET Developer at a corporate-archive provider
Total Outlook Converter Pro X ships with OutlookConverterX.exe, a console binary you can drive from scripts, scheduled tasks, e-discovery pipelines, or any backend service. The flag set matches the GUI build; for the full reference see the command-line documentation. What separates the Pro X binary from the standard Outlook Converter is attachment handling: the -docs switch tells the converter to render attached Word, Excel, image, and PDF files into the target format and stitch them into the same output document as the email body. The recipes below lean on that capability.
The signature Pro workflow. Every message becomes a single PDF that contains the email header, the body, and every attachment rendered inline — no orphan files in a sidecar folder.
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\out\" -cPDF -docs -attach -images
Production PSTs are never flat. -sub descends into every Outlook subfolder; -kfs recreates that same tree on disk so Inbox, Sent, and custom folders stay separated in the output.
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\out\Archive\" -cPDF -docs -sub -kfs -template "[date:yyyy-mm-dd]_[sender]_[subject]"
Reviewers want a manifest of what was attached, not just the email body. -iattach writes attachment metadata into the document, -uattach opens zipped attachments so their contents are converted too, and -rfcheaders preserves the full RFC-822 transport headers for chain-of-custody.
OutlookConverterX.exe "C:\Cases\Custodian01.pst" "C:\review\Custodian01\" -cPDF -docs -attach -iattach -uattach -rfcheaders -sub -kfs
When custodians are loaded by a worker, the queue arrives as a text file with one PST per line. -list consumes that file directly so you don't have to encode hundreds of paths into the command line.
OutlookConverterX.exe -list "C:\queues\custodians.txt" "C:\review\" -cPDF -docs -sub -kfs -fo
Legal review demands sequential numbering on every page, including pages that came from converted attachments. The header/footer flags apply to the merged PDF as a whole, so a single [page] token gives you continuous numbering across the email and its rendered docs.
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
Standard for shipping a converted mailbox to outside counsel: a visible label on every page, an owner password that locks edit/print permissions, and a user password that gates opening the file at all.
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
Replace Copy with any combination of Modify, Annotation, FormFill, HighResPrint to grant exactly the rights the recipient needs.
Records-management workflows that require ISO 19005-compliant PDF/A files with proper authoring metadata. The same flags work whether the source is a single PST or a folder of MSG/EML files.
OutlookConverterX.exe "C:\Mail\*.pst" "C:\archive\" -cPDF -docs -pdfa -PDFAuthor "Acme Records" -PDFTitle "2025 Q4 Mail Archive" -PDFSubject "Retention class 7" -sub
For regulated industries that require a cryptographic signature on each delivered file. Point the binary at a PFX certificate and supply its passphrase; every email PDF is signed as it is written.
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"
Some review platforms want the email as one PDF and each attachment as its own file, linked by name. -sdocs writes converted attachments as standalone documents instead of merging them; -atemplate controls how those companion files are named.
OutlookConverterX.exe "C:\Mail\Archive.pst" "C:\out\" -cPDF -docs -sdocs -attach -template "[mail_index]_[subject]" -atemplate "[mail]_att[attach_index]_[attach]"
Once OutlookConverterX.exe runs as a service or scheduled job, the log is the only feedback channel. -verbosity detail writes one line per message; -logmode append keeps history across runs; -dinet blocks remote image loading so the converter never hangs waiting on a tracking pixel.
OutlookConverterX.exe "C:\Mail\*.pst" "C:\out\" -cPDF -docs -sub -kfs -log "C:\logs\outlookconv.log" -verbosity detail -logmode append -dinet -fo
Updated Tue, 05 May 2026
(only $1100.00)
-docs attachment-conversion engine. With -docs the converter renders every supported attachment (Word, Excel, PowerPoint, images, PDFs) to the target format and merges them into the same output document as the email body, or saves them as separate documents alongside it (-sdocs). The regular Outlook Converter X only saves attachments as their original file types next to the email. Pro is the right choice for e-discovery, records retention, and any workflow where the deliverable is one self-contained PDF per email thread.new COM("OutlookConverterPro.OutlookConverterX") in PHP, new OutlookConverterX() in .NET (after registering the Pro ActiveX), win32com.client.Dispatch("OutlookConverterPro.OutlookConverterX") in Python, WIN32OLE.new('OutlookConverterPro.OutlookConverterX') in Ruby. Alternatively, the OutlookConverterX.exe command-line binary can be invoked from any process, scheduler, or shell script.-sub to descend into every Outlook subfolder (Inbox, Sent Items, Drafts, custom folders). Add -kfs to recreate that same folder tree on the output side instead of flattening everything into one bucket. Combined with -template "[date:yyyy-mm-dd]_[sender]_[subject]", this turns a 10GB PST into a clean folder tree of self-describing PDF files ready for review or archival.-pdfa for ISO 19005 (PDF/A) compliance, then -PFXFile "C:\certs\acme.pfx" -PFXPass "cert-pwd" to digitally sign with an organizational X.509 certificate. -SignLoc, -SignCon, and -SignRes attach signature metadata. Combined with -rfcheaders for transport-header preservation and -iattach for attachment indexing, this covers the full archival-records scenario regulated industries need.-IgnoreInvalidSource keeps a single bad source from aborting the whole batch. -dinet blocks remote image loading so the converter never hangs waiting on a tracking pixel embedded in HTML email. -list queue-file input plus -log -verbosity detail writes one structured line per message and per attachment for log-aggregator ingestion.Updated Tue, 05 May 2026
(only $1100.00)
Download free trial and convert your files in minutes.
No credit card or email required.