Конвертируйте файлы MSG и EML на веб-серверах
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Mail Converter Pro X — это серверный SDK, который конвертирует письма MSG и EML в PDF, PDF/A, DOC, RTF, TXT, HTML, TIFF и JPEG — с вложениями, конвертированными в тот же целевой формат и объединёнными в один итоговый файл, без Microsoft Outlook на сервере. Он работает в безголовом режиме: без графического интерфейса, без диалоговых окон, без всплывающих сообщений. Total Mail Converter Pro X поставляется с двоичным файлом командной строки и интерфейсом ActiveX/COM, поэтому встраивается в ASP, PHP, .NET, Python, Ruby, Java и любой другой COM-совместимый бэкенд.
Главное отличие версии Pro от обычной редакции X — параметр -docs. С включённым -docs каждое поддерживаемое вложение — документы Word, таблицы, изображения, PDF — конвертируется в тот же целевой формат (например, PDF) и либо объединяется с PDF самого письма, либо сохраняется отдельным документом рядом. Получатель открывает один файл и видит тело письма плюс все вложения в порядке чтения. Поддерживаемые типы входных вложений:
-uattach
Помимо конвертации вложений, Total Mail Converter Pro X закрывает весь сценарий e-discovery и архивного хранения записей: вывод в PDF/A (-pdfa), цифровая подпись сертификатами X.509 (-PFXFile/-PFXPass), включение транспортных заголовков RFC-822 (-rfcheaders), индексирование метаданных вложений (-iattach), штамповка колонтитулов в стиле Bates по всему объединённому документу, PDF с защитой паролем и флагами по правам доступа, а также рекурсивный обход папок с зеркалированием исходной структуры почтового ящика (-Recurse -kfs).
Высокая скорость конвертации и пакетная обработка превращают всё в простой и нескучный процесс — десятки тысяч писем с вложениями за одну ночную смену — это норма. Попробуйте бесплатно (30-дневный пробный период без ограничений) и убедитесь, что программа стоит своих денег.
Некоторые из поддерживаемых сейчас конвертаций форматов:
|
|
|
(включает 30-дневный бесплатный пробный период)
(только $1900.00)
string src = @"C:\test\Source.eml";
string dest = @"C:\test\Dest.pdf";
var cnv = new MailConverterX();
cnv.Convert(src, dest, "-cPDF -attach -docs -log c:\\test\\Mail.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\MailConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.msg";
var outPath = Path.GetTempFileName() + ".pdf";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
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 -attach -docs";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
int sleepCounter = 10;
while(!File.Exists(outPath) && sleepCounter > 0)
{
System.Threading.Thread.Sleep(1000);
sbLogs.AppendLine("sleep...");
sleepCounter--;
}
if (File.Exists(outPath))
sbLogs.AppendLine("Conversion complete successfully.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("MailConverterPro.MailConverterX")
C.Convert "c:\test\source.eml", "c:\test\dest.pdf", "-cPDF -attach -docs -log c:\Mail.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("MailConverterPro.MailConverterX")
Response.Clear
Response.AddHeader "Content-Type", "binary/octet-stream"
Response.AddHeader "Content-Disposition", "attachment; filename=test.pdf"
Response.BinaryWrite C.ConvertToStream("C:\www\ASP\Source.eml", "C:\www\ASP", "-cpdf -attach -docs -log c:\html.log")
set C = nothing
$src="C:\\test\\test.msg";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("MailConverterPro.MailConverterX");
$c->convert($src,$dest, "-cPDF -attach -docs -log c:\\Mail.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('MailConverterPro.MailConverterX')
src = "C:\\test\\test.eml"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -attach -docs -log c:\\test\\Mail.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("MailConverterPro.MailConverterX")
src = "C:\\test\\test.eml"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -attach -docs -log c:\\test\\Mail.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('MailConverterPro.MailConverterX');
c.Convert('c:\test\source.eml', 'c:\test\dest.pdf', '-cPDF -attach -docs -log c:\test\Mail.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("MailConverterPro.MailConverterX");
c.Convert("C:\\test\\source.msg", "C:\\test\\dest.pdf", "-cPDF -attach -docs");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.eml"; my $dest = "C:\\test\\test.pdf"; my $c = CreateObject Win32::OLE 'MailConverterPro.MailConverterX'; $c->convert($src, $dest, "-cPDF -attach -docs -log c:\\test\\Mail.log"); print $c->ErrorMessage if -e $dest;
"Мы очень довольны Total Mail Converter Pro. Использовали его, чтобы сконвертировать около 20 тысяч писем в PDF; для нас была важна возможность конвертировать вложения писем в целевой PDF. При обработке 20 тысяч сообщений лишь около десятка не удалось сконвертировать из-за нечитаемых вложений. Наше предложение по улучшению: когда вложение не удаётся сконвертировать, не пропускать всё письмо целиком, а конвертировать остальные вложения и формировать PDF без одного проблемного вложения. Так держать."
Manuel Schlief
www.darag.de
"Мы занимаемся e-discovery для внешних юристов. Клиенты присылают экспорты PST; наш конвейер превращает каждый PST в один PDF на дело — каждое письмо плюс каждое сконвертированное вложение в порядке чтения с сохранёнными заголовками RFC. Total Mail Converter Pro X с -docs -iattach -rfcheaders — это движок. Около 8 000 сообщений в час на нашем железе, включая рендеринг вложений DOCX/XLSX. Пять лет в продакшене, ни одного сбоя, в котором мы могли бы обвинить конвертер."
Henrik J.
Senior Backend Developer at a legal-tech vendor
"Архивы переписки с пациентами должны попадать в нашу систему документооборота как PDF/A с цифровыми подписями X.509 — требование цепочки хранения по HIPAA. -pdfa плюс -PFXFile/-PFXPass плюс -SignLoc/-SignCon/-SignRes закрывают весь сценарий подписи в одном вызове бинарника. Мы заменили Java/iText-конвейер, которому требовалось три отдельные библиотеки для того же результата. Безголовый запуск на Windows Server Core, без Outlook, без сюрпризов."
Renata B.
DevOps Engineer at a healthcare records platform
"Встроили Total Mail Converter Pro X в наш продукт для compliance-архивирования по Royalty-Free лицензии. Разовая плата за проект оказалась долей того, во что нам обошёлся бы стек Aspose.Email плюс Aspose.Words плюс Aspose.PDF. Наш инсталлятор поставляет и регистрирует ActiveX, наше приложение вызывает его напрямую, конечные пользователи видят только наш UI. Ограничение 32-битным ActiveX стоило нам пары дней переделки конвейера, но поддержка отвечала оперативно, когда мы спрашивали про обходные решения."
Daichi M.
Independent Software Vendor
"Клиенты присылают нам ночные экспорты EML из своих корпоративных тенантов Exchange. Наш worker-конвейер собирает каждую цепочку в один PDF со штампом Bates на папку дела. -Recurse -kfs сохраняет иерархию папок почтового ящика на стороне вывода, -HeadText/-FootText проставляет метку дела и пагинацию по страницам как письма, так и вложений. Детерминированно от запуска к запуску, что важно для юридического обзора. CLI стабильный и хорошо задокументированный."
Aleksandra W.
Lead .NET Developer at a corporate-archive provider
Total Mail Converter Pro X поставляется с MailConverterX.exe — консольной программой, которую можно запускать из скриптов, планировщика задач, воркеров почтовых архивов или любого серверного сервиса. Что отличает версию Pro — это переключатель -docs: вместо того чтобы просто сохранять вложения рядом с письмом, Pro конвертирует документы Word, таблицы, изображения и другие вложения в целевой формат и сливает их в тот же выходной файл, что и тело сообщения. Набор флагов соответствует GUI-версии MailConverter.exe; полный справочник смотрите в документации командной строки. Приведённые ниже рецепты сосредоточены на сценариях обработки вложений, которые поддерживает только редакция Pro.
Фирменный рабочий процесс Pro. -docs говорит конвертеру отрендерить каждое поддерживаемое вложение в PDF; при подразумеваемом по умолчанию -sdocs:off все отрендеренные страницы добавляются к PDF сообщения. Получатель открывает один файл и видит письмо плюс каждое вложение Word, Excel, изображение и PDF в порядке чтения.
MailConverterX.exe "C:\mail\incoming\*.msg" "C:\out\" -cPDF -attach -docs
Та же конвертация, но -sdocs пишет каждое сконвертированное вложение как отдельный PDF рядом с PDF сообщения, а не сливает их. Полезно, когда нижестоящие системы индексируют вложения по отдельности.
MailConverterX.exe "C:\mail\export\*.eml" "C:\out\" -cPDF -attach -docs -sdocs
После экспорта PST Outlook в MSG-файлы результатом является глубокое дерево папок, отражающее оригинальный почтовый ящик. -Recurse проходит по каждой подпапке; -kfs сохраняет ту же структуру на стороне вывода, чтобы Inbox, Sent Items и кастомные папки оставались разделёнными.
MailConverterX.exe "C:\pst-export\Mailbox\*.msg" "C:\out\Mailbox\" -cPDF -Recurse -kfs -attach -docs
Для юридического обзора нужны каждый заголовок, каждое поле получателя и запись того, что было приложено — даже когда вложение не удалось сконвертировать. -iattach пишет метаданные вложения (имя файла, размер, MIME-тип) в документ; -rfcheaders включает сырые транспортные заголовки RFC-822; -uattach распаковывает ZIP-вложения, чтобы их содержимое тоже было сконвертировано.
MailConverterX.exe "C:\case-2026-117\*.msg" "C:\review\case-2026-117\" -cPDF -Recurse -kfs -sender -rcpt -cc -bcc -date -subject -attach -iattach -uattach -docs -rfcheaders
Полезно для поставок одним документом: один PDF, содержащий каждое сообщение и каждое сконвертированное вложение в хронологическом порядке. -combine сливает все исходные файлы в один документ; -sort date упорядочивает их по дате сообщения.
MailConverterX.exe "C:\mail\ProjectAcme\*.eml" "C:\out\ProjectAcme-archive.pdf" -cPDF -combine -sort date -attach -docs
Когда письма плюс вложения покидают компанию, заблокируйте вывод. -mp задаёт пароль владельца (управляет правами), -up задаёт пароль пользователя (требуется для открытия), а -perm предоставляет именно те операции, которые получателю разрешено выполнять.
MailConverterX.exe "C:\mail\confidential\*.msg" "C:\out\" -cPDF -attach -docs -mp "owner-secret" -up "client-pwd" -perm Copy -pc Maximum
Когда объединённый PDF несёт тело письма и сконвертированные вложения, верхний/нижний колонтитул, применённый во время конвертации, единообразно маркирует каждую страницу — эквивалент штампа в стиле Bates по всему пакету. Поля метаданных PDF делают файл самоописательным в системах документооборота.
MailConverterX.exe "C:\mail\matter-4471\*.msg" "C:\out\matter-4471\" -cPDF -attach -docs -HeadText "Matter 4471 — CONFIDENTIAL" -HeadAlign center -FootText "Page [page] of [date]" -FootAlign right -PDFAuthor "Acme Legal" -PDFTitle "Matter 4471 mail archive" -PDFSubject "Privileged review copy"
Для рабочих процессов управления записями объединённый PDF с письмом и вложениями должен соответствовать ISO 19005 (PDF/A) и быть цифровой подписан организационным сертификатом. -pdfa включает режим PDF/A; -PFXFile + -PFXPass подписывают файл сертификатом X.509.
MailConverterX.exe "C:\mail\archive\2026\*.eml" "C:\archive\2026\" -cPDF -Recurse -kfs -attach -docs -pdfa -PFXFile "C:\certs\acme-archive.pfx" -PFXPass "cert-pwd" -SignLoc "Acme HQ" -SignCon "[email protected]" -SignRes "Records retention seal"
Имена файлов по умолчанию выводятся из исходного файла. -template позволяет составлять имена из метаданных сообщения — даты, отправителя, темы — что обычно нужно архивам и инструментам управления делами. -atemplate управляет именами отдельно сохраняемых вложений, когда включён -sdocs.
MailConverterX.exe "C:\mail\inbox\*.msg" "C:\out\" -cPDF -attach -docs -sdocs -template "[date:yyyy-mm-dd]_[sender]_[subject]" -atemplate "[mail]_attach[attach_index]_[attach]"
Как только MailConverterX.exe работает как сервис или плановое задание, единственный сигнал, который у вас есть, — лог. -verbosity detail пишет по строке на сообщение и на вложение; -logmode append сохраняет историю между запусками; -list читает очередь из текстового файла, произведённого воркером, вместо командной строки; -fo перезаписывает предыдущий вывод без подтверждения.
MailConverterX.exe -list "C:\queues\mail-batch.txt" "C:\out\" -cPDF -Recurse -kfs -attach -docs -fo -log "C:\logs\mailconv.log" -verbosity detail -logmode append
Обновлено Tue, 05 May 2026
(только $1900.00)
-docs. С ключом -docs конвертер рендерит каждое поддерживаемое вложение (Word, Excel, PowerPoint, изображения, PDF) в целевой формат и объединяет их в тот же выходной документ, что и тело письма, либо сохраняет отдельными документами рядом (-sdocs). Обычная Mail Converter X лишь сохраняет вложения в их исходных типах файлов рядом с письмом. Pro — правильный выбор для e-discovery, архивного хранения и любого процесса, где результат — один самодостаточный PDF на цепочку писем.new COM("MailConverterPro.MailConverterX") в PHP, new MailConverterX() в .NET (после регистрации Pro ActiveX), win32com.client.Dispatch("MailConverterPro.MailConverterX") в Python, WIN32OLE.new('MailConverterPro.MailConverterX') в Ruby. В качестве альтернативы двоичный файл командной строки MailConverterX.exe можно запускать из любого процесса, планировщика или shell-скрипта. Также доступно прямое потоковое получение PDF через ConvertToStream для веб-ответов в ASP/PHP.-uattach, чтобы их содержимое тоже было сконвертировано. Неподдерживаемые типы вложений отмечаются в журнале и пропускаются без прерывания обработки сообщения.-pdfa для соответствия ISO 19005 (PDF/A), затем -PFXFile "C:\certs\acme.pfx" -PFXPass "cert-pwd" для цифровой подписи корпоративным сертификатом X.509. Ключи -SignLoc, -SignCon и -SignRes добавляют метаданные подписи. В сочетании с -rfcheaders для сохранения транспортных заголовков и -iattach для индексирования вложений это закрывает весь сценарий архивного хранения записей, нужный регулируемым отраслям.-IgnoreInvalidSource не даёт одному плохому исходному файлу прервать всю партию. -msuccess и -merror направляют успешно обработанные и проблемные исходные файлы в разные папки. Очередь через -list плюс -log -verbosity detail пишет одну структурированную строку на каждое письмо и каждое вложение для приёма агрегаторами журналов.Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.
Docker docker run -p 5000:5000 tdhster/mailconverter-api