Convertissez des fichiers MSG et EML sur des serveurs web
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Mail Converter Pro X est un SDK serveur qui convertit les e-mails MSG et EML en PDF, PDF/A, DOC, RTF, TXT, HTML, TIFF et JPEG — avec les pièces jointes converties dans le même format cible et fusionnées en un seul fichier de sortie, sans Microsoft Outlook sur le serveur. Il s'exécute en mode headless : aucune interface graphique, aucune boîte de dialogue, aucune fenêtre pop-up. Total Mail Converter Pro X est livré à la fois avec un binaire en ligne de commande et une interface ActiveX/COM ; il s'intègre donc dans ASP, PHP, .NET, Python, Ruby, Java et tout autre backend compatible COM.
Ce qui distingue la version Pro de l'édition X classique, c'est l'option -docs. Lorsque -docs est activée, chaque pièce jointe prise en charge — documents Word, feuilles de calcul, images, PDF — est convertie dans le format cible (par ex. PDF) et soit fusionnée dans le PDF du message, soit enregistrée comme document distinct à côté. Le destinataire ouvre un seul fichier et voit le corps de l'e-mail accompagné de toutes les pièces jointes dans l'ordre de lecture. Types de pièces jointes pris en charge en entrée :
-uattach
Au-delà de la conversion des pièces jointes, Total Mail Converter Pro X couvre l'ensemble du scénario d'e-discovery et de conservation d'archives : sortie PDF/A (-pdfa), signature numérique avec certificats X.509 (-PFXFile/-PFXPass), inclusion des en-têtes de transport RFC-822 (-rfcheaders), indexation des métadonnées des pièces jointes (-iattach), tamponnage d'en-tête/pied de page de type Bates sur l'ensemble du document fusionné, PDF protégés par mot de passe avec drapeaux d'autorisation distincts, et récursion par dossier reproduisant la structure originale de la boîte aux lettres (-Recurse -kfs).
La vitesse de conversion élevée et le traitement par lots rendent le processus simple et sans monotonie — des dizaines de milliers de messages avec pièces jointes par exécution nocturne, c'est la norme. Essayez-le gratuitement (période d'essai de 30 jours, sans limitations) et constatez par vous-même qu'il vaut vraiment son prix.
Quelques-unes des conversions de formats actuellement prises en charge :
|
|
|
(inclut un essai GRATUIT de 30 jours)
(seulement $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;
"Nous sommes très satisfaits de Total Mail Converter Pro. Nous l'avons utilisé pour convertir environ 20 000 e-mails en PDF ; sa capacité à convertir les pièces jointes dans le PDF cible était essentielle pour nous. Sur la conversion des 20 000 messages, seule une douzaine a échoué à cause de pièces jointes illisibles. Notre suggestion d'amélioration : lorsqu'une pièce jointe échoue, ne pas ignorer l'ensemble du fichier e-mail mais convertir les autres pièces jointes et finaliser le PDF sans la seule pièce jointe défectueuse. Continuez ce bon travail."
Manuel Schlief
www.darag.de
"Nous faisons de l'e-discovery pour des cabinets d'avocats externes. Les clients envoient des exports PST ; notre pipeline transforme chaque PST en un PDF par dossier, chaque e-mail accompagné de chaque pièce jointe convertie dans l'ordre de lecture, avec les en-têtes RFC préservés. Total Mail Converter Pro X avec -docs -iattach -rfcheaders est le moteur. Environ 8 000 messages par heure sur notre matériel, y compris le rendu des pièces jointes DOCX/XLSX. Cinq ans en production, aucune défaillance imputable au convertisseur."
Henrik J.
Senior Backend Developer at a legal-tech vendor
"Les archives de communications avec les patients doivent atterrir dans notre système de gestion documentaire en PDF/A avec signatures numériques X.509 — exigence de chaîne de garde HIPAA. -pdfa combiné à -PFXFile/-PFXPass et à -SignLoc/-SignCon/-SignRes couvre l'ensemble du scénario de signature en un seul appel binaire. Nous avons remplacé un pipeline Java/iText qui nécessitait trois bibliothèques distinctes pour produire la même sortie. Headless sur Windows Server Core, sans Outlook, sans surprises."
Renata B.
DevOps Engineer at a healthcare records platform
"Nous avons intégré Total Mail Converter Pro X dans notre produit d'archivage de conformité sous la Royalty-Free License. Le forfait unique par projet a représenté une fraction de ce qu'aurait coûté la pile Aspose.Email plus Aspose.Words plus Aspose.PDF. Notre installeur livre et enregistre l'ActiveX, notre application l'appelle directement, les utilisateurs finaux ne voient que notre interface. La limitation à un ActiveX 32 bits nous a coûté quelques jours de remaniement du pipeline, mais le support a été réactif lorsque nous avons demandé des contournements."
Daichi M.
Independent Software Vendor
"Les clients nous envoient chaque nuit des exports EML depuis leurs tenants Exchange d'entreprise. Notre pipeline de workers fusionne chaque fil de discussion en un seul PDF tamponné Bates par dossier d'affaire. -Recurse -kfs préserve la hiérarchie des dossiers de la boîte aux lettres côté sortie, -HeadText/-FootText applique l'étiquette du dossier et la pagination sur les pages du message comme sur celles des pièces jointes. Déterministe entre les exécutions, ce qui compte pour la revue juridique. La CLI est stable et bien documentée."
Aleksandra W.
Lead .NET Developer at a corporate-archive provider
Total Mail Converter Pro X 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. Ce qui distingue la variante Pro est l'option -docs : au lieu de simplement enregistrer les pièces jointes à côté de l'e-mail, Pro convertit les documents Word, feuilles de calcul, images et autres pièces jointes au format cible et les fusionne dans le même fichier de sortie que le corps du message. 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 se concentrent sur les scénarios de gestion des pièces jointes que seule l'édition Pro prend en charge.
Le flux Pro signature. -docs indique au convertisseur de rendre chaque pièce jointe prise en charge en PDF ; avec -sdocs:off implicite (par défaut), toutes les pages rendues sont ajoutées au PDF du message. Le destinataire ouvre un seul fichier et voit l'e-mail plus chaque pièce jointe Word, Excel, image et PDF dans l'ordre de lecture.
MailConverterX.exe "C:\mail\incoming\*.msg" "C:\out\" -cPDF -attach -docs
Même conversion, mais -sdocs écrit chaque pièce jointe convertie comme son propre PDF aux côtés du PDF du message au lieu de les fusionner. Utile lorsque les systèmes en aval indexent les pièces jointes individuellement.
MailConverterX.exe "C:\mail\export\*.eml" "C:\out\" -cPDF -attach -docs -sdocs
Après avoir exporté un PST Outlook vers des fichiers MSG, le résultat est une arborescence de dossiers profonde reflétant la boîte aux lettres d'origine. -Recurse traverse chaque sous-dossier ; -kfs conserve la même structure côté sortie pour qu'Inbox, Sent Items et les dossiers personnalisés restent séparés.
MailConverterX.exe "C:\pst-export\Mailbox\*.msg" "C:\out\Mailbox\" -cPDF -Recurse -kfs -attach -docs
Pour la revue juridique, vous avez besoin de chaque en-tête, de chaque champ destinataire et d'un enregistrement de ce qui a été joint — même lorsqu'une pièce jointe n'a pas pu être convertie. -iattach écrit les métadonnées de pièce jointe (nom de fichier, taille, type MIME) dans le document ; -rfcheaders inclut les en-têtes bruts de transport RFC-822 ; -uattach décompresse les pièces jointes ZIPées pour que leur contenu soit aussi converti.
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
Utile pour les transferts en livrable unique : un PDF contenant chaque message et chaque pièce jointe convertie dans l'ordre chronologique. -combine fusionne tous les fichiers source en un seul document ; -sort date les ordonne par date de message.
MailConverterX.exe "C:\mail\ProjectAcme\*.eml" "C:\out\ProjectAcme-archive.pdf" -cPDF -combine -sort date -attach -docs
Lorsque les e-mails plus pièces jointes quittent l'entreprise, verrouillez la sortie. -mp définit le mot de passe propriétaire (contrôle les autorisations), -up définit le mot de passe utilisateur (requis pour ouvrir), et -perm accorde exactement les opérations que le destinataire est autorisé à faire.
MailConverterX.exe "C:\mail\confidential\*.msg" "C:\out\" -cPDF -attach -docs -mp "owner-secret" -up "client-pwd" -perm Copy -pc Maximum
Lorsque le PDF fusionné porte le corps d'e-mail et les pièces jointes converties, un en-tête/pied de page appliqué au moment de la conversion étiquette chaque page de manière cohérente — équivalent à un tampon de style Bates sur tout le paquet. Les champs de métadonnées PDF rendent le fichier auto-descriptif dans les systèmes de gestion documentaire.
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"
Pour les flux de gestion documentaire, le PDF fusionné e-mail-plus-pièces-jointes doit être conforme ISO 19005 (PDF/A) et signé numériquement avec un certificat organisationnel. -pdfa active le mode PDF/A ; -PFXFile + -PFXPass signent le fichier avec un certificat 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"
Les noms de fichiers par défaut sont dérivés du fichier source. -template vous permet de composer des noms à partir des métadonnées du message — date, expéditeur, sujet — ce que les archives et outils de gestion d'affaires veulent généralement. -atemplate contrôle les noms des pièces jointes enregistrées séparément lorsque -sdocs est activé.
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]"
Une fois que MailConverterX.exe tourne en service ou tâche planifiée, le seul signal dont vous disposez est le journal. -verbosity detail écrit une ligne par message et par pièce jointe ; -logmode append conserve l'historique entre les exécutions ; -list lit la file d'attente depuis un fichier texte produit par le worker au lieu de la ligne de commande ; -fo écrase la sortie précédente sans demander.
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
Mis à jour Tue, 05 May 2026
(seulement $1900.00)
-docs. Avec -docs, le convertisseur restitue chaque pièce jointe prise en charge (Word, Excel, PowerPoint, images, PDF) dans le format cible et la fusionne dans le même document de sortie que le corps de l'e-mail, ou l'enregistre comme document distinct à côté (-sdocs). Le Mail Converter X classique enregistre uniquement les pièces jointes dans leur format d'origine à côté de l'e-mail. Pro est le bon choix pour l'e-discovery, la conservation d'archives et tout flux de travail dont le livrable est un PDF unique et autonome par fil de discussion.new COM("MailConverterPro.MailConverterX") en PHP, new MailConverterX() en .NET (après enregistrement de l'ActiveX Pro), win32com.client.Dispatch("MailConverterPro.MailConverterX") en Python, WIN32OLE.new('MailConverterPro.MailConverterX') en Ruby. Sinon, le binaire en ligne de commande MailConverterX.exe peut être invoqué 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.-uattach afin que leur contenu soit également converti. Les types de pièces jointes non pris en charge sont signalés dans le journal et ignorés sans interrompre le message.-pdfa pour la conformité ISO 19005 (PDF/A), puis -PFXFile "C:\certs\acme.pfx" -PFXPass "cert-pwd" pour signer numériquement avec un certificat X.509 d'organisation. -SignLoc, -SignCon et -SignRes attachent les métadonnées de signature. Combiné à -rfcheaders pour la préservation des en-têtes de transport et à -iattach pour l'indexation des pièces jointes, cela couvre l'ensemble du scénario d'archivage exigé par les secteurs réglementés.-IgnoreInvalidSource empêche qu'un seul fichier source défectueux n'interrompe l'ensemble du lot. -msuccess et -merror redirigent les fichiers source traités et en échec vers des dossiers distincts. L'entrée par fichier de file d'attente -list combinée à -log -verbosity detail écrit une ligne structurée par message et par pièce jointe pour ingestion par un agrégateur de logs.Téléchargez la version d'essai gratuite et convertissez vos fichiers en quelques minutes.
Aucune carte de crédit ou email requis.
Docker docker run -p 5000:5000 tdhster/mailconverter-api