2009-11-12 3 views
0

IIS의 SMTP badmail 폴더에서 NDR 파일을 구문 분석해야합니다. NDR에 첨부 된 내용은 base64로 인코딩됩니다. 그것이 내가 얻을 필요가있는 것입니다. 나는 StreamReader를 사용하여 하나의 라인이 되길 바랬지 만, Perforam이 .ReadLine 일 때 별도의 라인이되기를 바랬다. 여기 StreamReader에서 base64로 인코딩 된 콘텐츠를 검색 하시겠습니까?

은 NDR 샘플이다

 
From: postmaster 
To: hidden 
Date: Thu, 12 Nov 2009 11:56:14 -0500 
MIME-Version: 1.0 
Content-Type: multipart/report; report-type=delivery-status; 
    boundary="9B095B5ADSN=_01CA638BF4740C5500000045spinstitch.com" 
X-DSNContext: 7ce717b1 - 1378 - 00000002 - C00402EF 
Message-ID: 
Subject: Delivery Status Notification (Failure) 

This is a MIME-formatted message. 
Portions of this message may be unreadable without a MIME-capable mail program. 

--9B095B5ADSN=_01CA638BF4740C5500000045spinstitch.com 
Content-Type: text/plain; charset=unicode-1-1-utf-7 

This is an automatically generated Delivery Status Notification. 

Delivery to the following recipients failed. 

     hidden 




--9B095B5ADSN=_01CA638BF4740C5500000045spinstitch.com 
Content-Type: message/delivery-status 

Reporting-MTA: dns;spinstitch.com 
Received-From-MTA: dns;spinstitch 
Arrival-Date: Thu, 12 Nov 2009 11:56:11 -0500 

Final-Recipient: rfc822;hidden 
Action: failed 
Status: 5.4.0 

--9B095B5ADSN=_01CA638BF4740C5500000045spinstitch.com 
Content-Type: message/rfc822 

Received: from mail pickup service by spinstitch.com with Microsoft SMTPSVC; 
    Thu, 12 Nov 2009 11:56:11 -0500 
MIME-Version: 1.0 
From: hidden 
To: hidden 
Date: 12 Nov 2009 11:56:11 -0500 
Subject: For Sale: 463 Saltaire Dr. Calabash, NC US 28467 $6,800,000 
Content-Type: text/html; charset=utf-8 
Content-Transfer-Encoding: base64 
Message-ID: 
X-OriginalArrivalTime: 12 Nov 2009 16:56:11.0813 (UTC) FILETIME=[09CED550:01CA63B9] 

DQo8Y2VudGVyPg0KPGltZyBpZD0idHJJTUciIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHNyYz0i 
aHR0cDovL3NlcnZpY2VzLnNwaW5zdGl0Y2guY29tL3RyaW1nLmFzcHg/Z2V0SW1nPUswaXg0 
cDJkZ1c4b3ozRmZBNE5GcmJxVmFoUTZpOWd2Z2ZlZmVWcjhSZkVhamdnamFYUnROMWU2RW15 
OG5ic0dUbWMxOEo0UnlhMS81WVFvaFhraFA2VTNFcTRFRHB4R1J4YmpjeXlhOG56aExKT2hD 
M0QzL3RWNVh6ZmxWNkphIj4NCjxkaXYgc3R5bGU9IndpZHRoOjEwMCU7IGJhY2tncm91bmQ6 
IHVybChodHRwOi8vd3d3LnNwaW5zdGl0Y2h0b3Vycy5jb21GaWxlcy9WaWV3ZXJTa2lucy9C 
YWNrZ3JvdW5kcy9EZWZhdWx0L2JhY2suanBnKTsgYmFja2dyb3VuZC1hdHRhY2htZW50OmZp 
eGVkOw0KCWJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC15Ow0KCWJhY2tncm91bmQtcG9zaXRp 
b246dG9wIGNlbnRlcjsNCgliYWNrZ3JvdW5kLWNvbG9yOiM3YTZmNTM7Ij4NCjx0YWJsZSB3 
aWR0aD0iNjEyIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+ 
DQogIDx0cj4NCiAgICA8dGQgd2lkdGg9IjUyOSIgYWxpZ249ImxlZnQiPjx0YWJsZSB3aWR0 
aD0iMjAwIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+DQog 
ICAgICA8dHI+DQogICAgICAgIDx0ZCB3aWR0aD0iOTEiIGFsaWduPSJjZW50ZXIiPjxhIGlk 
PSJwcmludGZseWVyIiBocmVmPSJodHRwOi8vc2VydmljZXMuc3BpbnN0aXRjaC5jb20vTWFp 
bERpcmVjdC5hc3B4P21haWxlcj1LMGl4NHAyZGdXOG96M0ZmQTRORnJicVZhaFE2aTlndmdm 
ZWZlVnI4UmZFYWpnZ2phWFJ0TjFlNkVteThuYnNHVG1jMThKNFJ5YTElMmY1WVFvaFhraFA2 
VTNFcTRFRHB4R1J4YmpjeXlhOG56aExKT2hDM0QzJTJmdFY1WHpmbFY2SmElN2NsaW5rUHJp 
bnQiIHRpdGxlPSJQcmludCBGbHllciI+PGltZyBzcmM9Imh0dHA6Ly93d3cuc3BpbnN0aXRj 
aHRvdXJzLmNvbS9pbWFnZXMvTWFpbGluZ3MvRmx5ZXIvdGFiUHJpbnQucG5nIiB3aWR0aD0i 
OTEiIGhlaWdodD0iMjgiIGJvcmRlcj0iMCI+PC9hPjwvdGQ+DQogICAgICAgIDx0ZCB3aWR0 
aD0iOTEiIGFsaWduPSJjZW50ZXIiPjxhIGlkPSJzYXZlY29weSIgaHJlZj0iaHR0cDovL3Nl 
cnZpY2VzLnNwaW5zdGl0Y2guY29tL01haWxEaXJlY3QuYXNweD9tYWlsZXI9SzBpeDRwMmRn 
VzhvejNGZkE0TkZyYnFWYWhRNmk5Z3ZnZmVmZVZyOFJmRWFqZ2dqYVhSdE4xZTZFbXk4bmJz 
R1RtYzE4SjRSeWExJTJmNVlRb2hYa2hQNlUzRXE0RURweEdSeGJqY3l5YThuemhMSk9oQzNE 
MyUyZnRWNVh6ZmxWNkphJTdjbGlua1NhdmUiIHRpdGxlPSJTYXZlIEZseWVyIj48aW1nIHNy 
Yz0iaHR0cDovL3d3dy5zcGluc3RpdGNodG91cnMuY29tL2ltYWdlcy9NYWlsaW5ncy9GbHll 
ci90YWJTYXZlLnBuZyIgd2lkdGg9IjkxIiBoZWlnaHQ9IjI4IiBib3JkZXI9IjAiPjwvYT48 
L3RkPg0KICAgICAgICA8dGQgd2lkdGg9IjkxIiBhbGlnbj0iY2VudGVyIj48YSBpZD0ibWFw 
IiBocmVmPSJodHRwOi8vc2VydmljZXMuc3BpbnN0aXRjaC5jb20vTWFpbERpcmVjdC5hc3B4 
P21haWxlcj1LMGl4NHAyZGdXOG96M0ZmQTRORnJicVZhaFE2aTlndmdmZWZlVnI4UmZFYWpn 
Z2phWFJ0TjFlNkVteThuYnNHVG1jMThKNFJ5YTElMmY1WVFvaFhraFA2VTNFcTRFRHB4R1J4 
YmpjeXlhOG56aExKT2hDM0QzJTJmdFY1WHpmbFY2SmElN2NsaW5rTWFwIiB0aXRsZT0iTWFw 
IFByb3BlcnR5Ij48aW1nIHNyYz0iaHR0cDovL3d3dy5zcGluc3RpdGNodG91cnMuY29tL2lt 
YWdlcy9NYWlsaW5ncy9GbHllci90YWJNYXAucG5nIiB3aWR0aD0iOTEiIGhlaWdodD0iMjgi 
IGJvcmRlcj0iMCI+PC9hPjwvdGQ+DQogICAgICAgIDx0ZCB3aWR0aD0iOTEiIGFsaWduPSJj 
ZW50ZXIiPjxhIGlkPSJ2aXJ0dWFsdG91ciIgaHJlZj0iaHR0cDovL3NlcnZpY2VzLnNwaW5z 
dGl0Y2guY29tL01haWxEaXJlY3QuYXNweD9tYWlsZXI9SzBpeDRwMmRnVzhvejNGZkE0TkZy 
YnFWYWhRNmk5Z3ZnZmVmZVZyOFJmRWFqZ2dqYVhSdE4xZTZFbXk4bmJzR1RtYzE4SjRSeWEx 
JTJmNVlRb2hYa2hQNlUzRXE0RURweEdSeGJqY3l5YThuemhMSk9oQzNEMyUyZnRWNVh6ZmxW 
NkphJTdjbGlua1ZyVG91ciIgdGl0bGU9IlZpcnR1YWwgVG91ciI+PGltZyBzcmM9Imh0dHA6 
Ly93d3cuc3BpbnN0aXRjaHRvdXJzLmNvbS9pbWFnZXMvTWFpbGluZ3MvRmx5ZXIvdGFiVnJU 
b3VyLnBuZyIgd2lkdGg9IjkxIiBoZWlnaHQ9IjI4IiBib3JkZXI9IjAiPjwvYT48L3RkPg0K 
ICAgICAgPC90cj4NCiAgICA8L3RhYmxlPjwvdGQ+DQogIDwvdHI+DQogIDx0ciBzdHlsZT0i 
Ym9yZGVyOiAxcHggc29saWQ7Ij4NCiAgICA8dGQ+PGltZyBpZD0iZmx5ZXJCZyIgc3JjPSJo 
dHRwOi8vd3d3LnNwaW5zdGl0Y2h0b3Vycy5jb20vdG91cnMvdG91cjEyNi9mbHllcnMvZG5w 
VmJOWjMyRHdheGpLODZtMWNMeXhGRzFqd0tORmlBSGdiRWxBeHBTNnlFUHF0WC5qcGciIG5h 
bWU9ImZseWVyQmciIHdpZHRoPSI2MTIiIGhlaWdodD0iNzkyIiBzdHlsZT0iYm9yZGVyOiAx 
cHggc29saWQ7Ij48L3RkPg0KICA8L3RyPg0KPC90YWJsZT4NCjxicj4NCjxhIGlkPSJ1bnN1 
YiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBm 
b250LXNpemU6IDEwcHg7IiBocmVmPSJodHRwOi8vc2VydmljZXMuc3BpbnN0aXRjaC5jb20v 
TWFpbERpcmVjdC5hc3B4P21haWxlcj1LMGl4NHAyZGdXOG96M0ZmQTRORnJicVZhaFE2aTln 
dmdmZWZlVnI4UmZFYWpnZ2phWFJ0TjFlNkVteThuYnNHVG1jMThKNFJ5YTElMmY1WVFvaFhr 
aFA2VTNFcTRFRHB4R1J4YmpjeXlhOG56aExKT2hDM0QzJTJmdFY1WHpmbFY2SmElN2N1bnN1 
YiI+VW5zdWJzY3JpYmUgZnJvbSB0aGlzIG1haWxpbmc8L2E+PGJyPg0KPHNwYW4gc3R5bGU9 
ImZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6 
IDEwcHg7Ij5Db3B5cmlnaHQgw4LCqSAyMDA5IFNwaW5TdGl0Y2ggTExDIDExMTAgQmFzaWxk 
b24gUmQuIE10LiBQbGVhc2FudCwgU0MgIDI5NDY2PC9zcGFuPg0KPC9kaXY+DQo8L2NlbnRl 
cj4NCg== 


--9B095B5ADSN=_01CA638BF4740C5500000045spinstitch.com-- 

답변

1

이 정규 표현식은 base64로 문자열과 일치하고 디코딩 :

Match m = Regex.Match(
    File.ReadAllText(@"c:\edit1.txt"), 
    @"X-OriginalArrivalTime:.*?\r\n\r\n([\s\S]*)\r\n\r\n"); 
byte[] data = Convert.FromBase64String(m.Groups[1].Value); 

정규 표현식을 사용하지 않으려면, 당신은 당신이 X-OriginalArrivalTime 헤더를 찾을 때까지 모든 라인을 건너을 시도 할 수 있습니다. 거기에서 빈 줄을 찾거나 스트림을 끝낼 때까지 모든 줄을 유지할 수 있습니다.

+0

RegEx는 나와 잘 맞습니다. 이 표현은 마지막 줄도 거부합니까? --9B095B5ADSN = _01CA638BF4740C5500000045spinstitch.com-- – DDiVita

+0

생각해 보면, 마지막 줄은 디코딩 될 때 공백으로 인해 거부 될 수 있습니다 ..... – DDiVita

+0

나는이 사이트를 사랑합니다. !!!!! 감사!!!!! 그 소리! – DDiVita

관련 문제