我需要从IIS解析来自SMTP badmail文件夹的NDR文件。附加到NDR的是base64编码的内容。这就是我需要达到的目标。我希望,使用StreamReader,它将是一行,但是当一个连续的.ReadLine时,它们是分开的行。
以下是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--
答案 0 :(得分: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
标题。从那里,您可以保留每一行,直到找到空行或流结束。
答案 1 :(得分:0)
请尝试使用Read()方法。