メールが配信不能な場合に送信される NDR (配信不能レポート) を解析する csharp アプリを作成しようとしています。目標は、無効になったメーリング リストからメール アドレスの登録を解除することです。
Exchange Web サービス API (EWS) を使用して Exchange サーバーに接続するコードを書くことができました。メッセージ本文を取得します。私がやりたいことは、電子メール アドレスとエラー コードを照合して、電子メール アドレスとエラーのレポートを生成し、手動で確認できるようにすることです。
メッセージの本文の内容は次のようになります。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p><b><font color="#000066" size="3" face="Arial">Delivery has failed to these recipients or groups:</font></b></p>
<font color="#000000" size="2" face="Tahoma">
<p><a href="mailto:email@domain.com">email@domain.com</a><br>
A communication failure occurred during the delivery of this message. Please try resending the message later. If the problem continues, contact your helpdesk.<br>
</p>
</font><br>
<br>
<br>
<br>
<br>
<br>
<font color="#808080" size="2" face="Tahoma">
<p><b>Diagnostic information for administrators:</b></p>
<p>Generating server: WEB16.domain.net</p>
<p>email@domain.com<br>
#< #5.5.0 smtp;554 Sending address not accepted due to spam filter> #SMTP#</p>
<p>Original message headers:</p>
<pre>Received: from WEB12 ([192.168.33.64]) by WEB16.domain.net with Microsoft
SMTPSVC(7.5.7601.17514); Sun, 8 Jul 2012 09:27:42 -0400
Thread-Topic: domain.com order 178014 has been received and is pending
thread-index: Ac1dDXyHxyN+loq8SeaIzTsVoLE/3g==
From: <sender@domain.com>
To: <recipient@domain.com>
CC:
BCC:
Subject: domain.com order 178014 has been received and is pending
Date: Sun, 8 Jul 2012 09:27:56 -0400
Message-ID: <22C1C2F24E1744D4B51C1A5EF9DE3E50@domain.net>
MIME-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
X-Mailer: Microsoft CDO for Windows 2000
Content-Class: urn:content-classes:message
Importance: normal
Priority: normal
X-MimeOLE: Produced By Microsoft MimeOLE V6.1.7601.17609
Return-Path: sender@domain.com
X-OriginalArrivalTime: 08 Jul 2012 13:27:42.0955 (UTC) FILETIME=[743A53B0:01CD5D0D]
</pre>
</font>
</body>
</html>
送信された電子メールアドレスとそれに付随するエラーメッセージに一致する正規表現を考え出そうとしています.
// First we set the input string.
string body = message.Body.Text;
// Regex string
Regex emailregex = new Regex("^<p>(.+?)</a><br>$");
var match = emailregex.Match(body);
if (match.Success)
Console.WriteLine(match.Groups[1].Value);
// Regex string
Regex errorregex = new Regex("</a><br>\n(.+?)<br>$");
match = errorregex.Match(body);
if (match.Success)
Console.WriteLine(match.Groups[1].Value);
私が設定した正規表現はどちらも機能していないようです。私は正規表現の第一人者ではありません。誰かが私が間違っている方向に私を向けることができますか?
ありがとうブラッド