웹 서버에서 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는 MSG 및 EML 이메일을 PDF, PDF/A, DOC, RTF, TXT, HTML, TIFF 및 JPEG로 변환하는 서버 측 SDK입니다 — 첨부 파일은 동일한 대상 형식으로 렌더링되어 하나의 출력 파일로 병합되며, 서버에 Microsoft Outlook이 필요하지 않습니다. 헤드리스로 실행됩니다: GUI 없음, 대화상자 없음, 팝업 없음. 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일 평가판, 제한 없음). 그만한 가치가 있다는 것을 확인하실 수 있습니다.
현재 지원되는 파일 형식 변환 일부:
|
|
|
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에 매우 만족하고 있습니다. 약 2만 개의 메일을 PDF로 변환하는 데 사용했으며, 우리에게 중요했던 것은 메일 첨부 파일을 대상 PDF로 변환하는 기능이었습니다. 2만 개의 메시지를 변환하는 동안 읽을 수 없는 첨부 파일 때문에 실패한 것은 약 12개에 불과했습니다. 개선 제안: 첨부 파일이 실패할 때 메일 파일 전체를 건너뛰지 말고 다른 첨부 파일을 변환하여 단일 결함 첨부 파일 없이 PDF를 완성해 주세요. 계속 좋은 작업 부탁드립니다."
Manuel Schlief
www.darag.de
"우리는 외부 변호사를 위한 전자 증거 개시 작업을 합니다. 고객은 PST 익스포트를 보내고, 우리 파이프라인은 각 PST를 사건당 하나의 PDF로 변환합니다. 모든 이메일과 변환된 모든 첨부 파일이 RFC 헤더가 보존된 채 읽기 순서대로 들어갑니다. -docs -iattach -rfcheaders 옵션의 Total Mail Converter Pro X가 그 엔진입니다. 우리 하드웨어에서 DOCX/XLSX 첨부 파일 렌더링을 포함해 시간당 약 8,000개의 메시지를 처리합니다. 5년간 프로덕션에서 운영 중이며 컨버터 탓으로 돌릴 수 있는 실패는 없었습니다."
Henrik J.
Senior Backend Developer at a legal-tech vendor
"환자 통신 아카이브는 X.509 디지털 서명이 있는 PDF/A로 우리 문서 관리 시스템에 들어가야 합니다 — 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를 Royalty-Free License로 우리의 컴플라이언스 아카이빙 제품에 번들로 묶었습니다. 일회성 프로젝트당 비용은 Aspose.Email + Aspose.Words + Aspose.PDF를 스택으로 구성했을 때 비용의 일부에 불과했습니다. 우리 인스톨러가 ActiveX를 배포하고 등록하며, 우리 앱이 직접 호출하고, 최종 사용자는 우리 UI만 봅니다. 32비트 ActiveX 제한으로 파이프라인을 재작업하는 데 며칠이 걸렸지만, 우회 방법에 대해 문의했을 때 지원팀의 응답이 신속했습니다."
Daichi M.
Independent Software Vendor
"고객은 우리에게 기업 Exchange 테넌트에서 매일 밤 EML 익스포트를 보냅니다. 우리 워커 파이프라인은 각 스레드를 사건 폴더당 하나의 Bates 스탬프 PDF로 병합합니다. -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
Outlook PST를 MSG 파일로 내보낸 후, 결과는 원래 메일박스를 미러링하는 깊은 폴더 트리입니다. -Recurse는 모든 하위 폴더를 순회합니다. -kfs는 출력 측에서 동일한 구조를 유지하므로 받은 편지함, 보낸 편지함 및 사용자 정의 폴더가 분리된 상태로 유지됩니다.
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가 이메일 본문과 변환된 첨부 파일을 포함할 때, 변환 시간에 적용된 머리글/바닥글은 모든 페이지에 일관되게 레이블을 지정합니다 — 전체 패키지에 걸친 베이츠 스타일 스탬프와 동등합니다. 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
-docs 첨부 파일 변환 엔진을 추가합니다. -docs를 사용하면 컨버터가 지원되는 모든 첨부 파일(Word, Excel, PowerPoint, 이미지, PDF)을 대상 형식으로 렌더링하여 이메일 본문과 동일한 출력 문서에 병합하거나 별도 문서로 함께 저장합니다(-sdocs). 일반 Mail Converter X는 첨부 파일을 원본 파일 형식 그대로 이메일 옆에 저장합니다. Pro는 전자 증거 개시, 기록 보존, 그리고 이메일 스레드당 하나의 자체 완결 PDF가 결과물인 모든 워크플로에 적합한 선택입니다.new COM("MailConverterPro.MailConverterX"), .NET에서는 (Pro ActiveX 등록 후) new MailConverterX(), Python에서는 win32com.client.Dispatch("MailConverterPro.MailConverterX"), Ruby에서는 WIN32OLE.new('MailConverterPro.MailConverterX'). 또는 MailConverterX.exe 명령줄 바이너리를 모든 프로세스, 스케줄러 또는 셸 스크립트에서 호출할 수 있습니다. ASP/PHP 웹 응답을 위한 ConvertToStream을 통한 직접 PDF 스트리밍도 사용할 수 있습니다.-uattach로 압축을 풀어 그 내용도 변환할 수 있습니다. 지원되지 않는 첨부 파일 유형은 로그에 기록되며 메시지 처리를 중단하지 않고 건너뜁니다.-pdfa를 사용한 다음, 조직의 X.509 인증서로 디지털 서명하려면 -PFXFile "C:\certs\acme.pfx" -PFXPass "cert-pwd"를 사용합니다. -SignLoc, -SignCon, -SignRes는 서명 메타데이터를 첨부합니다. 전송 헤더 보존을 위한 -rfcheaders 및 첨부 파일 인덱싱을 위한 -iattach와 결합하면 규제 산업이 필요로 하는 전체 아카이브 기록 시나리오를 다룹니다.-IgnoreInvalidSource는 단일 잘못된 소스 파일이 전체 일괄 처리를 중단시키지 않도록 합니다. -msuccess와 -merror는 처리된 소스 파일과 실패한 소스 파일을 별도 폴더로 라우팅합니다. -list 큐 파일 입력과 -log -verbosity detail은 메시지당 그리고 첨부 파일당 하나의 구조화된 행을 작성하여 로그 집계기 수집에 사용할 수 있습니다.무료 평가판을 다운로드하고 몇 분 만에 파일을 변환하세요.
신용카드나 이메일이 필요하지 않습니다.
Docker docker run -p 5000:5000 tdhster/mailconverter-api