Convertir des emails via des serveurs web
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Mail Converter X est un SDK côté serveur qui convertit les e-mails MSG, EML et MBOX vers PDF, DOC, RTF, HTML, XHTML, TXT, TIFF, JPEG, EML, MSG et PST — sans Microsoft Outlook, MAPI ni aucun composant Office Interop sur le serveur. Il fonctionne en silence : aucune interface graphique, aucune boîte de dialogue, aucune fenêtre contextuelle. Total Mail Converter X est livré avec un binaire en ligne de commande et une interface ActiveX/COM, ce qui permet de l'intégrer dans ASP, PHP, .NET, Python, Ruby, Java et tout autre back-end compatible COM.
Ce que fait cette édition Standard :
-atemplate ; les pièces jointes ZIP sont décompressées avec -uattach
-HeadText / -FootText) pour l'e-discovery juridique
-mp, -up, -perm)
-rfcheaders)
-Recurse + -kfs pour traiter l'arborescence complète d'une boîte aux lettres
Standard ou Pro X : l'édition Standard enregistre les pièces jointes dans leur format d'origine à côté du PDF de l'e-mail. La version Pro avec -docs convertit les pièces jointes (DOCX, XLSX, images, PDF) dans le format cible et les fusionne dans le même fichier de sortie que le corps du message. Choisissez Standard pour l'archivage simple d'une boîte aux lettres ; choisissez Pro pour les livrables d'e-discovery où la sortie attendue est un PDF unique et autonome par fil de discussion.
Essayez-le gratuitement (période d'évaluation de 30 jours, sans limitation) et vérifiez par vous-même qu'il vaut bien son prix.
Quelques-unes des conversions de formats actuellement prises en charge :
|
|
|
Les agents LLM (Claude, ChatGPT, Cursor, Cline) et les frameworks de recherche (LangChain, LlamaIndex, Haystack) ne lisent ni le MSG, ni l'EML, ni le MBOX — ils lisent du texte. Total Mail Converter X ecrit le courrier au format GitHub-Flavored Markdown avec un frontmatter structure et un sidecar optionnel compatible Docling, de sorte que chaque message atterrit dans votre vector store avec expediteur, destinataires, date, sujet, threading et corps intacts — et non comme une decharge plate ou en-tetes et corps sont melanges.
Ce que vous obtenez en visant la sortie Markdown :
source_file, format (MIME), message_id, from, to, cc, bcc, date, subject, in_reply_to, references (threading complet), has_attachments, language detectee, generator et un binary_hash pour la tracabilite
in_reply_to et references restent interrogeables, de sorte qu'un index RAG en aval peut reconstruire les conversations
attachments dans le frontmatter liste nom, type MIME et taille ; les fichiers eux-memes sont enregistres a cote du Markdown (c'est le comportement standard pour les pieces jointes dans cette edition ; pour des pieces jointes restituees inline utilisez Total Mail Converter Pro X)
.docling.json optionnel — JSON au schema Docling avec ancres en-tete/corps, metadonnees completes des pieces jointes et tableau chunks_hint que votre splitter peut lire
Il s'agit du CoolUtils RAG Adapter — un contrat Markdown unifie partage par tous les produits Total Converter X. La specification complete, des exemples .md + .docling.json et des extraits d'integration sont disponibles sur la page Coolutils Converter X — RAG Adapter.
(inclut un essai GRATUIT de 30 jours)
(seulement $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;
"Je travaille pour Freeland Cooper & Foreman LLP et je m'occupe actuellement du projet pour lequel nous avons acheté Total Mail Converter X. Nous l'avons acquis pour fusionner un grand nombre de fichiers .msg au format .pst, et jusqu'à présent je suis très satisfait des résultats : il est fiable, hautement fonctionnel et facile à utiliser."
Max Canin
www.freelandlaw.com
"Nous utilisons SharePoint comme bibliothèque de documents et y accédons via UNC. Je me sers de Total Mail Converter X pour archiver les e-mails. J'utilise la ligne d'objet comme partie du nom de fichier résultant, mais cela pose un problème : SharePoint n'autorise pas certains caractères dans les noms de fichiers. Je me demandais s'il serait possible d'ajouter une option en ligne de commande pour supprimer les caractères non autorisés afin de respecter les chemins UNC SharePoint."
Shane Adam
Systems Analyst & Developer, http://eigltd.com
"Nous archivons les exports de boîtes aux lettres des employés qui quittent l'entreprise. Les clients nous envoient des dumps PST/MBOX ; notre pipeline transforme chacun d'eux en un dossier de PDF autonomes avec les en-têtes RFC-822 complets conservés pour examen judiciaire. Total Mail Converter X avec -Recurse -kfs -rfcheaders -combine est le moteur. Six ans en production, débit d'environ 5 000 messages par heure sur notre matériel. Aucune trace d'Outlook dans le pipeline."
Bartosz K.
Senior Backend Developer at a compliance-archive vendor
"Les tickets contiennent des fichiers EML en pièce jointe ; l'équipe support a besoin de copies PDF pour la trace du ticket. Total Mail Converter X plus Total Folder Monitor : les tickets déposent leurs EML dans un dossier d'entrée, le convertisseur les traite, l'outil de support récupère les PDF. Pagination Bates propre grâce à -HeadText/-FootText, aucune intervention manuelle. Sans interface sur Windows Server Core, sans Outlook, sans mauvaise surprise de licence."
Soledad O.
DevOps Engineer at a customer-support SaaS
"Nous avons intégré Total Mail Converter X à notre produit de gestion documentaire sous la licence Royalty-Free. Les frais uniques par projet représentaient une fraction de ce qu'Aspose.Email demandait sur un abonnement par développeur. Notre installateur déploie et enregistre l'ActiveX, notre application l'appelle directement, l'utilisateur final ne voit que notre interface. La limitation 32 bits de l'ActiveX nous a coûté deux jours de retravail du pipeline, mais le support a réagi rapidement quand nous avons demandé des solutions de contournement."
Niko T.
Independent Software Vendor
Total Mail ConverterX est livré avec MailConverterX.exe, un binaire console que vous pouvez piloter depuis des scripts, des tâches planifiées, des workers d'archivage de courrier ou tout service backend. Le jeu d'options correspond à l'interface graphique MailConverter.exe ; pour la référence complète, consultez la documentation en ligne de commande. Les recettes ci-dessous couvrent les cas dont nos clients SDK travaillant avec des boîtes aux lettres MSG, EML et MBOX nous parlent le plus souvent.
L'appel le plus simple possible — un message Outlook en entrée, un PDF en sortie.
MailConverterX.exe "C:\mailbox\invoice.msg" "C:\out\invoice.pdf" -cPDF
Traitez tout un dossier de fichiers EML exportés depuis Thunderbird, Apple Mail ou tout client IMAP et déposez les PDF dans un répertoire de sortie frère.
MailConverterX.exe "C:\mailbox\*.eml" "C:\out\" -cPDF
Échangez le masque pour *.msg ou *.mbox pour choisir un format source différent, ou -cDOC / -cTXT / -cTIFF pour choisir une cible différente.
Un export Outlook vit rarement dans un seul dossier plat — vous obtenez généralement Inbox, Sent, Archive et des dizaines de sous-dossiers. -Recurse parcourt les sous-répertoires ; -kfs recrée la même arborescence côté sortie au lieu d'aplatir tout dans un seul seau.
MailConverterX.exe "C:\export\Mailbox\*.msg" "C:\out\Mailbox\" -cPDF -Recurse -kfs
Pour la e-discovery et les dossiers d'affaires, vous voulez généralement un PDF par affaire, pas un par e-mail. -combine fusionne les messages correspondants en un seul PDF dans l'ordre des fichiers source ; -sort date les organise chronologiquement.
MailConverterX.exe "C:\cases\Acme\*.eml" "C:\out\Acme-thread.pdf" -cPDF -combine -sort date
L'édition Standard convertit le corps de l'e-mail et écrit les pièces jointes originales sur disque à côté du document de sortie. -attach active l'extraction des pièces jointes ; -atemplate contrôle le motif de nom de fichier de pièce jointe.
MailConverterX.exe "C:\mailbox\*.msg" "C:\out\" -cPDF -attach -atemplate "[mail]_[attach_index]_[attach]"
Ajoutez -uattach pour décompresser automatiquement les pièces jointes ZIP, ou -images pour incorporer les images en ligne directement dans le corps du PDF.
Par défaut, chaque champ d'en-tête est exporté. Pour produire un PDF propre prêt à imprimer qui ne montre que From, Date et Subject — pas de CC, pas de BCC, pas d'en-têtes de transport — désactivez explicitement les champs indésirables.
MailConverterX.exe "C:\mailbox\*.eml" "C:\out\" -cPDF -sender -date -subject -cc:off -bcc:off -rcpt:off
Ajoutez -rfcheaders si vous avez besoin que les en-têtes complets de transport RFC-822 soient préservés pour examen forensique.
Tamponnage de style Bates pour les transferts de litige : un pied de page avec numéro de page courant sur chaque page, plus un en-tête avec la date de production. [page] et [date] sont les espaces réservés intégrés.
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
Standard pour l'envoi de correspondance privilégiée à un avocat adverse : un mot de passe propriétaire verrouille les autorisations d'édition/impression, un mot de passe utilisateur contrôle l'ouverture du fichier, et -perm accorde exactement les droits que vous autorisez.
MailConverterX.exe "C:\mailbox\*.msg" "C:\out\" -cPDF -mp "owner-pwd" -up "user-pwd" -perm Copy
Une fois que MailConverterX.exe tourne en service ou tâche planifiée, le seul moyen de savoir ce qui s'est passé est le journal. -verbosity detail écrit une ligne par fichier ; -logmode append conserve l'historique entre les exécutions ; -fo écrase silencieusement la sortie précédente au lieu de s'arrêter sur les collisions.
MailConverterX.exe "C:\mailbox\*.eml" "C:\out\" -cPDF -log "C:\logs\mailconv.log" -verbosity detail -logmode append -fo
Lorsqu'un worker d'archivage de courrier écrit un fichier de file d'attente et que le convertisseur le consomme, vous ne voulez pas encoder les chemins de fichiers dans la ligne de commande elle-même. -list lit les masques de fichiers (un par ligne) depuis un fichier texte.
MailConverterX.exe -list "C:\queues\mail-batch.txt" "C:\out\" -cPDF -log "C:\logs\mailconv.log"
Mis à jour Tue, 05 May 2026
(seulement $950.00)
-docs, qui convertit chaque pièce jointe prise en charge (Word, Excel, PowerPoint, images, PDF) au format cible et les fusionne dans le même PDF de sortie que le corps de l'e-mail. Choisissez Standard pour l'archivage simple ; choisissez Pro pour les livrables d'e-discovery où la sortie est un PDF unique et autonome par fil de discussion.new COM("MailConverter.MailConverterX") en PHP, new MailConverterX() en .NET, win32com.client.Dispatch("MailConverter.MailConverterX") en Python, WIN32OLE.new('MailConverter.MailConverterX') en Ruby. Vous pouvez aussi appeler le binaire en ligne de commande MailConverterX.exe depuis n'importe quel processus, planificateur ou script shell. Le streaming PDF direct via ConvertToStream est également disponible pour les réponses web ASP/PHP.-c <FORMAT> pour choisir la cible.-attach pour activer l'extraction des pièces jointes. Par défaut, elles sont placées dans le même dossier que le PDF de sortie. Utilisez -atemplate "[mail]_[attach_index]_[attach]" pour définir un modèle de nommage personnalisé basé sur les métadonnées du message et de la pièce jointe. Ajoutez -uattach pour décompresser automatiquement les pièces jointes ZIP afin que leur contenu soit enregistré avec le reste. Ajoutez -images pour intégrer les images en ligne directement dans le corps du PDF au lieu de les enregistrer comme fichiers.-mp "owner-pwd" définit le mot de passe propriétaire (qui contrôle les autorisations) ; -up "user-pwd" verrouille l'ouverture du fichier ; -perm accepte toute combinaison de Print, HighResPrint, Copy, Modify, Annotation, FormFill. Pour le tampon Bates, utilisez -HeadText/-FootText avec les espaces réservés [page], [date], [time] et -HeadAlign/-FootAlign pour positionner le texte. Combiné avec -combine -sort date, cela produit un PDF unique avec tampon Bates pour tout un fil d'e-mails..md comme format de sortie et le convertisseur écrit un fichier GitHub-Flavored Markdown par message : les corps HTML sont convertis en Markdown, les corps en texte brut sont transmis tels quels, le MIME multipart est assemblé en une seule vue lisible. Un bloc YAML frontmatter porte message_id, from, to, cc, bcc, date, subject, in_reply_to et references (threading complet), plus un tableau attachments avec nom, type MIME et taille. Les chaînes de threading restent interrogeables, ce qui permet à un index RAG en aval de reconstruire des conversations entières. Cela fait partie du CoolUtils RAG Adapter — le même contrat Markdown est partagé par tous les produits Total Converter X.binary_hash pour la traçabilité et un tableau chunks_hint que votre splitter peut lire. Activez-le avec -Docling en ligne de commande. Le JSON est indépendant du Markdown — vous pouvez alimenter votre index avec les deux, ou n'utiliser que le .md..md est du GFM standard avec un bloc YAML frontmatter, donc UnstructuredMarkdownLoader de LangChain, MarkdownReader de LlamaIndex, MarkdownToDocument de Haystack et les outils de fichier MCP de Claude Code le lisent directement. Pour Claude, ChatGPT ou n'importe quelle UI de chat, vous pouvez coller le Markdown dans le contexte tel quel — l'expéditeur/destinataire/date sont visibles en haut, les métadonnées de threading sont dans le frontmatter et le corps se lit comme un message ordinaire.MailConverterX.exe "C:\inbox\*.eml" "C:\out\" -cMD -Docling -Recurse -kfs. -cMD sélectionne Markdown ; -Docling écrit en plus le sidecar .docling.json ; -Recurse parcourt les sous-répertoires ; -kfs reproduit la structure des dossiers de la boîte aux lettres côté sortie. Fonctionne de la même manière sur les entrées MSG et MBOX. Combinez avec -template "[date:yyyy-mm-dd]_[from]_[subject]" pour des noms de fichiers auto-descriptifs. Le Markdown résultant est prêt à être segmenté, embeddé et indexé dans n'importe quel vector store.Téléchargez la version d'essai gratuite et convertissez vos fichiers en quelques minutes.
Aucune carte de crédit ou email requis.
Contactez-nous. Nous améliorerons volontiers notre convertisseur de courrier pour qu'il réponde parfaitement à vos besoins. La personnalisation est souvent gratuite pour nos clients.
Docker docker run -p 5000:5000 tdhster/mailconverter-api