حوِّل ملفات 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 سيناريو الاكتشاف الإلكتروني وحفظ السجلات بالكامل: إخراج 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 الناتج. خلال تحويل العشرين ألف رسالة، فشل نحو اثني عشر ملفاً فقط بسبب مرفقات غير قابلة للقراءة. اقتراحنا للتحسين: عند فشل أحد المرفقات، لا تُتخطّى الرسالة بأكملها، بل تُحوَّل بقية المرفقات ويُكمَل ملف PDF بدون المرفق المعطوب. واصلوا عملكم الجيد."
Manuel Schlief
www.darag.de
"نقوم بأعمال الاكتشاف الإلكتروني للمستشارين الخارجيين. يرسل العملاء صادرات PST؛ وخط الإنتاج لدينا يحول كل ملف PST إلى ملف PDF واحد لكل قضية، بحيث يحتوي على كل بريد وكل مرفق محوَّل بترتيب القراءة مع الحفاظ على رؤوس RFC. Total Mail Converter Pro X مع -docs -iattach -rfcheaders هو المحرك. حوالي 8000 رسالة في الساعة على عتادنا متضمنة عرض مرفقات 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 في منتجنا للأرشفة بغرض الامتثال بموجب الترخيص الخالي من الإتاوات. الرسوم لمرة واحدة لكل مشروع كانت جزءاً صغيراً مما كنا سندفعه مقابل رزمة Aspose.Email و Aspose.Words و Aspose.PDF. منصّبنا يشحن ActiveX ويسجّله، وتطبيقنا يستدعيه مباشرة، ولا يرى المستخدمون النهائيون سوى واجهتنا. كلّفنا قيد الـ 32 بت في ActiveX يومين من إعادة تصميم خط الأنابيب، لكن الدعم كان متجاوباً عندما سألنا عن حلول بديلة."
Daichi M.
Independent Software Vendor
"يُرسل لنا العملاء ليلياً صادرات EML من حساباتهم على Exchange المؤسسي. يدمج خط العمال لدينا كل سلسلة محادثة في ملف PDF واحد مختوم بـ Bates لكل مجلد قضية. -Recurse -kfs يحافظ على هرمية مجلدات صندوق البريد في جانب الإخراج، و -HeadText/-FootText يطبّق علامة القضية وترقيم الصفحات على صفحات الرسالة والمرفقات معاً. النتائج حتمية عبر التشغيلات، وهو ما يهمّ في المراجعة القانونية. واجهة سطر الأوامر مستقرة وموثّقة جيداً."
Aleksandra W.
Lead .NET Developer at a corporate-archive provider
يأتي Total Mail Converter Pro X مع MailConverterX.exe، وهو ملف ثنائي يعمل من وحدة التحكم يمكنك تشغيله من السكربتات أو المهام المجدولة أو عمال أرشيف البريد أو أي خدمة خلفية. ما يميز إصدار Pro هو مفتاح -docs: بدلاً من مجرد حفظ المرفقات بجانب البريد الإلكتروني، فإن Pro يحوِّل مستندات Word وجداول البيانات والصور والمرفقات الأخرى إلى صيغة الهدف ويدمجها في نفس ملف الإخراج مع نص الرسالة. تتطابق مجموعة الأعلام مع واجهة المستخدم الرسومية 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 هي الخيار الصحيح للاكتشاف الإلكتروني وحفظ السجلات وأي سير عمل تكون مخرجاته ملف PDF واحد قائم بذاته لكل سلسلة بريد.new COM("MailConverterPro.MailConverterX") في PHP، و new MailConverterX() في .NET (بعد تسجيل ActiveX الخاص بـ Pro)، و 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 فيكتب سطراً منظماً واحداً لكل رسالة ولكل مرفق بحيث يستوعبه مجمّع السجلات.قم بتنزيل النسخة التجريبية المجانية وحول ملفاتك في دقائق.
لا تحتاج إلى بطاقة ائتمان أو بريد إلكتروني.
Docker docker run -p 5000:5000 tdhster/mailconverter-api