Конвертируйте электронные письма через веб-серверы
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Mail Converter X — это серверный SDK, который конвертирует письма MSG, EML и MBOX в PDF, DOC, RTF, HTML, XHTML, TXT, TIFF, JPEG, EML, MSG и PST — без Microsoft Outlook, MAPI или какого-либо Office Interop на сервере. Работает в тихом режиме: без графического интерфейса, без диалогов, без всплывающих окон. Total Mail Converter X поставляется одновременно с бинарником командной строки и интерфейсом ActiveX/COM, поэтому встраивается в ASP, PHP, .NET, Python, Ruby, Java и любой другой COM-совместимый бэкенд.
Что умеет Standard-вариант:
-atemplate; ZIP-вложения распаковываются с помощью -uattach
-HeadText / -FootText) для юридического e-discovery
-mp, -up, -perm)
-rfcheaders)
-Recurse + -kfs для обработки целого дерева почтового ящика
Standard и Pro X: издание Standard сохраняет вложения в их исходных типах файлов рядом с PDF-копией письма. Pro-версия с ключом -docs рендерит вложения (DOCX, XLSX, картинки, PDF) в целевой формат и склеивает их в один выходной файл вместе с телом письма. Выбирайте Standard для простого архивирования почтового ящика; выбирайте Pro для e-discovery, где результат — один самодостаточный PDF на цепочку писем.
Попробуйте бесплатно (30 дней без ограничений) и убедитесь, что программа стоит своих денег.
Некоторые из поддерживаемых на сегодня преобразований:
|
|
|
(включает 30-дневный бесплатный пробный период)
(только $950.00)
string src = @"C:\test\Source.eml";
string dest = @"C:\test\Dest.pdf";
var cnv = new MailConverterX();
cnv.Convert(src, dest, "-cPDF -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";
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("MailConverter.MailConverterX")
C.Convert "c:\test\source.eml", "c:\test\dest.pdf", "-cPDF -log c:\mail.log"
Response.Write C.ErrorMessage
set C = nothing
dim C
Set C=CreateObject("MailConverter.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 -log c:\mail.log")
set C = nothing
$src="C:\\test\\test.msg";
$dest="C:\\test\\test.pdf";
if (file_exists($dest)) unlink($dest);
$c= new COM("MailConverter.MailConverterX");
$c->convert($src,$dest, "-cPDF -log c:\\Mail.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('MailConverter.MailConverterX')
src = "C:\\test\\test.eml"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Mail.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("MailConverter.MailConverterX")
src = "C:\\test\\test.eml"
dest = "C:\\test\\test.pdf"
c.convert(src, dest, "-cPDF -log c:\\test\\Mail.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('MailConverter.MailConverterX');
c.Convert('c:\test\source.eml', 'c:\test\dest.pdf', '-cPDF -log c:\test\Mail.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("MailConverter.MailConverterX");
c.Convert("C:\\test\\source.msg", "C:\\test\\dest.pdf", "-cPDF");
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 'MailConverter.MailConverterX'; $c->convert($src, $dest, "-cPDF -log c:\\test\\Mail.log"); print $c->ErrorMessage if -e $dest;
"Я работаю в Freeland Cooper & Foreman LLP и сейчас веду проект, ради которого мы купили Total Mail Converter X. Мы приобрели программу для объединения большого количества файлов .msg в формат .pst, и пока я очень доволен результатами; программа надёжна, обладает богатой функциональностью и проста в использовании."
Max Canin
www.freelandlaw.com
"Мы используем SharePoint как библиотеку документов и обращаемся к нему через UNC. С помощью Total Mail Converter X я архивирую почтовые сообщения. Я использую тему письма как часть итогового имени файла, но это создаёт проблему: SharePoint не разрешает определённые символы в именах файлов. Хотел бы попросить добавить опцию командной строки, которая удаляла бы небезопасные символы для использования в UNC-путях SharePoint."
Shane Adam
Systems Analyst & Developer, http://eigltd.com
"Мы архивируем выгрузки почтовых ящиков увольняющихся сотрудников. Заказчики присылают нам дампы PST/MBOX; наш пайплайн превращает каждый в папку самодостаточных PDF с полностью сохранёнными заголовками RFC-822 для криминалистической экспертизы. Total Mail Converter X с ключами -Recurse -kfs -rfcheaders -combine — это движок. Шесть лет в продакшне, пропускная способность около 5000 сообщений в час на нашем железе. Никакого Outlook нигде в пайплайне."
Bartosz K.
Senior Backend Developer at a compliance-archive vendor
"К тикетам прикрепляются EML-файлы; команде поддержки нужны PDF-копии для истории тикета. Total Mail Converter X плюс Total Folder Monitor: тикеты сбрасывают EML во входящую папку, конвертер их разгребает, инструмент поддержки забирает PDF. Аккуратные постраничные номера в стиле Bates благодаря -HeadText/-FootText, без ручного вмешательства. Headless на Windows Server Core, без Outlook, без сюрпризов с лицензиями."
Soledad O.
DevOps Engineer at a customer-support SaaS
"Встроили Total Mail Converter X в наш продукт для управления записями по Royalty-Free лицензии. Разовая плата за проект оказалась долей того, что Aspose.Email хотел брать по подписке за каждого разработчика. Наш инсталлятор поставляет и регистрирует ActiveX, наше приложение вызывает его напрямую, конечные пользователи видят только наш интерфейс. Ограничение в виде 32-битного ActiveX стоило нам пары дней переработки пайплайна, но поддержка отвечала оперативно, когда мы спрашивали про обходные пути."
Niko T.
Independent Software Vendor
Total Mail ConverterX поставляется с MailConverterX.exe — консольной программой, которую можно запускать из скриптов, планировщика задач, воркеров почтовых архивов или любого серверного сервиса. Набор флагов соответствует GUI-версии MailConverter.exe; полный справочник смотрите в документации командной строки. Приведённые ниже рецепты охватывают сценарии, о которых чаще всего спрашивают клиенты SDK, работающие с почтовыми ящиками MSG, EML и MBOX.
Минимально возможный вызов — одно письмо Outlook на входе, один PDF на выходе.
MailConverterX.exe "C:\mailbox\invoice.msg" "C:\out\invoice.pdf" -cPDF
Обработайте целую папку EML-файлов, экспортированных из Thunderbird, Apple Mail или любого IMAP-клиента, и положите PDF в соседнюю папку вывода.
MailConverterX.exe "C:\mailbox\*.eml" "C:\out\" -cPDF
Замените маску на *.msg или *.mbox, чтобы выбрать другой исходный формат, или -cDOC / -cTXT / -cTIFF, чтобы выбрать другой целевой формат.
Экспорт Outlook редко лежит в одной плоской папке — обычно вы получаете Inbox, Sent, Archive и десятки подпапок. -Recurse обходит подкаталоги; -kfs воссоздаёт то же дерево на стороне вывода вместо того, чтобы сваливать всё в одну корзину.
MailConverterX.exe "C:\export\Mailbox\*.msg" "C:\out\Mailbox\" -cPDF -Recurse -kfs
Для электронного раскрытия и материалов дел обычно нужен один PDF на дело, а не по одному на письмо. -combine сливает совпавшие сообщения в один PDF в порядке исходных файлов; -sort date упорядочивает их хронологически.
MailConverterX.exe "C:\cases\Acme\*.eml" "C:\out\Acme-thread.pdf" -cPDF -combine -sort date
Стандартное издание конвертирует тело письма и пишет оригинальные вложения на диск рядом с выходным документом. -attach включает извлечение вложений; -atemplate управляет шаблоном имени файла вложения.
MailConverterX.exe "C:\mailbox\*.msg" "C:\out\" -cPDF -attach -atemplate "[mail]_[attach_index]_[attach]"
Добавьте -uattach, чтобы автоматически распаковывать ZIP-вложения, или -images, чтобы встраивать встроенные изображения прямо в тело PDF.
По умолчанию экспортируется каждое поле заголовка. Чтобы получить чистый PDF, готовый к печати, который показывает только From, Date и Subject — без CC, без BCC, без транспортных заголовков — явно отключите ненужные поля.
MailConverterX.exe "C:\mailbox\*.eml" "C:\out\" -cPDF -sender -date -subject -cc:off -bcc:off -rcpt:off
Добавьте -rfcheaders, если вместо этого нужны полные транспортные заголовки RFC-822, сохранённые для криминалистического анализа.
Маркировка в стиле Bates для передач в судебные дела: нижний колонтитул с бегущим номером страницы на каждой странице, плюс верхний колонтитул с датой выпуска. [page] и [date] — встроенные плейсхолдеры.
MailConverterX.exe "C:\cases\Acme\*.msg" "C:\out\Acme.pdf" -cPDF -combine -sort date -HeadText "ACME-PROD [date]" -HeadAlign right -FootText "Page [page]" -FootAlign center
Стандарт для отправки привилегированной переписки противоположной стороне: пароль владельца блокирует права на редактирование/печать, пароль пользователя ограничивает открытие файла, а -perm предоставляет именно те права, которые вы разрешаете.
MailConverterX.exe "C:\mailbox\*.msg" "C:\out\" -cPDF -mp "owner-pwd" -up "user-pwd" -perm Copy
Как только MailConverterX.exe работает как сервис или плановое задание, единственный способ узнать, что произошло, — лог. -verbosity detail пишет по строке на файл; -logmode append сохраняет историю между запусками; -fo молча перезаписывает более ранний вывод вместо остановки на коллизиях.
MailConverterX.exe "C:\mailbox\*.eml" "C:\out\" -cPDF -log "C:\logs\mailconv.log" -verbosity detail -logmode append -fo
Когда воркер почтового архива пишет файл-очередь, а конвертер его разбирает, не нужно зашивать пути к файлам в саму командную строку. -list читает маски файлов (по одной на строку) из текстового файла.
MailConverterX.exe -list "C:\queues\mail-batch.txt" "C:\out\" -cPDF -log "C:\logs\mailconv.log"
Обновлено Tue, 05 May 2026
(только $950.00)
-docs, который рендерит каждое поддерживаемое вложение (Word, Excel, PowerPoint, картинки, PDF) в целевой формат и склеивает их в один выходной PDF вместе с телом письма. Выбирайте Standard для простого архивирования почтового ящика; выбирайте Pro для e-discovery, где результат — один самодостаточный PDF на цепочку писем.new COM("MailConverter.MailConverterX") в PHP, new MailConverterX() в .NET, win32com.client.Dispatch("MailConverter.MailConverterX") в Python, WIN32OLE.new('MailConverter.MailConverterX') в Ruby. Альтернативно, бинарник командной строки MailConverterX.exe можно вызвать из любого процесса, планировщика или shell-скрипта. Также доступна прямая стриминг-выдача PDF через ConvertToStream для веб-ответов ASP/PHP.-c <FORMAT> для выбора целевого формата.-attach, чтобы включить извлечение вложений. По умолчанию вложения попадают в ту же папку, что и выходной PDF. Используйте -atemplate "[mail]_[attach_index]_[attach]", чтобы задать собственный шаблон именования по метаданным сообщения и вложения. Добавьте -uattach, чтобы автоматически распаковывать ZIP-вложения и сохранять их содержимое рядом с остальным. Добавьте -images, чтобы встроить инлайн-картинки прямо в тело PDF, а не сохранять их отдельными файлами.-mp "owner-pwd" задаёт пароль владельца (управляет правами доступа); -up "user-pwd" закрывает открытие файла; -perm принимает любую комбинацию Print, HighResPrint, Copy, Modify, Annotation, FormFill. Для штамповки Bates используйте -HeadText/-FootText с плейсхолдерами [page], [date], [time] и -HeadAlign/-FootAlign для позиционирования. В связке с -combine -sort date это даёт один PDF со штамповкой Bates на всю цепочку писем.Скачайте пробную версию и конвертируйте файлы за считанные минуты.
Не требуется ни банковская карта, ни email.
Свяжитесь с нами . Мы с радостью улучшим наш почтовый конвертер, чтобы он идеально соответствовал вашим потребностям. Настройка часто бесплатна для наших клиентов.
Docker docker run -p 5000:5000 tdhster/mailconverter-api