2017-07-17 26 views
0

Exchange Web Services APIを使用してメッセージを送信し、配信されているかどうかを確認する必要があります。これを行うには、EWSトレースを使用しようとしましたが、ログファイルには常にNoErrorステータスが送信されても​​存在しません。 最後のメッセージをSentItemsフォルダに入れてプロパティを確認しようとしていますが、配信ステータスのプロパティが見つかりません。私はそれで何ができますか?今 マイコード:メッセージ配信ステータスを取得するEWS

private void checkDeliveryStatuses(ExchangeService service) 
    { 
     ItemView itemview = new ItemView(10); 
     itemview.PropertySet = new PropertySet(BasePropertySet.IdOnly, EmailMessageSchema.InternetMessageId, *some property for status*); 
     FindItemsResults<Item> newMessages = service.FindItems(WellKnownFolderName.SentItems, itemview); 
     foreach (Item item in newMessages) 
     { 
      EmailMessage msg = item as EmailMessage; 
      //Somehow get delivery status here 
     } 
    } 

答えて

2

配達状況がSentItemsフォルダに保存されたメッセージのコピーに保存されていないので、どのようなあなたのあなたがそれを使用しようとしているように動作しません。やろうとしています。 EWSは、あなたがそれらを使用したいので、もしあなたがEWSマネージAPIでこれらの操作を使用するためのサポートがないhttps://msdn.microsoft.com/en-us/library/office/bb409286(v=exchg.150).aspx#bk_message_trackingを使用するように試みることができるあなたが使用してRAW SOAPまたはプロキシのいずれかのオブジェクトにする必要がありますいくつかのメッセージの追跡操作が

ExchangeServiceBinding esb = new ExchangeServiceBinding(); 
esb.Credentials = new NetworkCredential("username", "password", "domain"); 
esb.Url = "https://servername/EWS/Exchange.asmx"; 
esb.RequestServerVersionValue = new RequestServerVersion(); 
esb.RequestServerVersionValue.Version = ExchangeVersionType.Exchange2010_SP1; 
ReplyToItemType riRepItem = new ReplyToItemType(); 
FindMessageTrackingReportRequestType fmtRequest = new FindMessageTrackingReportRequestType(); 
fmtRequest.Scope = "Organization"; 
fmtRequest.StartDateTime = DateTime.Now.AddDays(-4); 
fmtRequest.Sender = new EmailAddressType(); 
fmtRequest.Sender.EmailAddress = "[email protected]"; 
fmtRequest.Domain = "msgdevelop.com"; 
fmtRequest.StartDateTimeSpecified = true; 
FindMessageTrackingReportResponseMessageType fmtResponse = esb.FindMessageTrackingReport(fmtRequest); 
foreach (FindMessageTrackingSearchResultType fmtSearchResult in fmtResponse.MessageTrackingSearchResults) 
{ 
Console.WriteLine(fmtSearchResult.MessageTrackingReportId); 
GetMessageTrackingReportRequestType gmt = new GetMessageTrackingReportRequestType(); 
gmt.MessageTrackingReportId = fmtSearchResult.MessageTrackingReportId; 
gmt.Scope = "Organization"; 
gmt.ReportTemplate = MessageTrackingReportTemplateType.Summary; 
GetMessageTrackingReportResponseMessageType gmtResponse = esb.GetMessageTrackingReport(gmt); 
foreach (RecipientTrackingEventType rte in gmtResponse.MessageTrackingReport.RecipientTrackingEvents) 
{ 
    Console.WriteLine(rte.EventDescription); 
    Console.WriteLine(rte.DeliveryStatus); 
} 
} 
を例えばました
+0

ありがとう、しかしExchangeServiceBindingオブジェクトを取得するにはどうすればいいですか?今私は名前空間エラーがあります。私はそれをGoogleにしようとしましたが、助けにはなりませんでした。 –

+0

Visual Studio https://msdn.microsoft.com/en-us/library/office/bb408520(v=exchg.140).aspxなどのWebサービスプロキシオブジェクトを生成する必要があります(2010年は2008年と同じです) 、2015、2017) –

+0

こんにちは。 「アクセスが拒否されました。資格情報を確認して、もう一度やり直してください。 in fmtResponse。資格情報が正しい。何が間違っていますか? –

関連する問題