2014-09-01 2 views
0

EWS를 사용하여받은 편지함에서 전자 메일 본문 만 읽는 중입니다.최신 전자 메일 대화를 읽는 방법 Microsoft Exchange 웹 서비스를 사용하여 특정 전자 메일에서 HTML 본문을 읽는 방법

전체 이메일 본문 대신 답장 된 이메일 본문 만 추출해야합니다.

예컨대

************ 
A This is good tenant. 

Regards, 
Test 

From:[email protected] 
To: ---- 
---------- 
---------- 

Hi User, Data has been populated. Please reply with A or R with comments. 

Regard 
Admin. 

************ 

위의 전자 메일 본문을 읽을 때 위에 언급 한 전체 본문이 표시됩니다. 하지만 내가 필요로하는 것은 :

************ 
A This is good tenant. 

Regards, 
Test 
************ 

최근 답변 한 이메일 본문 만있는 것입니다.

+0

EWS가 최신 응답의 새로운 텍스트를 추출하기위한 API를 가지고 있다고 생각하지 않습니다. 그래도 대화의 이전 메시지에서 작업하면 꽤 멀어 질 수 있습니다 (http://msdn.microsoft.com/en-us/library/office/dn610351(v=exchg.150).aspx). 또는'From :'부분 이후의 모든 것을 식별하고 제거하는 일반 .NET (비 EWS 관련) 코드/라이브러리를 살펴볼 수 있습니다. 벌써 해봤 니? –

+0

안녕하세요, 프랭크 고마워요. 나는 UniqueBody를 전자 메일에서 읽으려고 시도했는데, 이는 반환 할 것입니다. 전체 전자 본문의 고유 한 본문, null이면 전체 본문은 retur로 1. 특정 전자 메일 읽기 전자 메일 대화를 사용해 보았습니다. 각 이메일에 대해 대화를 읽을 수 있습니다. 이메일의 각 대화마다 색인이 생성됩니다. 이메일을 승인/거부하기 위해 본 이메일에 답장 한 이메일이 아래에 있다고 가정 해보십시오. *************** A 이것은 좋은 거주자입니다. 관련, 테스트에서 : [email protected] ............. ............. 친애하는 사용자, 데이터 생성 . 감사합니다. 관리자 *************** –

+0

1. 우리는 대화의 본문을 읽을 때 [0] - 가장 많이/가장 최근에 - 우리는 몸으로 아래에 도착할 것입니다. **************** A 이것은 좋은 거주자입니다. 관련, 테스트에서 : [email protected] ............. ............. 친애하는 사용자, 데이터 생성 . 감사 관리 ********************** 2. 우리는 대화 [1]의 몸을 읽을 때 - 우리가 아래로 얻을 것이다 본문 ******************** 사용자님께, 작성하신 서류. 감사합니다, CMA ******************* –

답변

1

이 나를 위해 UniqueBody 작품과 접근 방식 : 결과의 모든 후속 메시지를

// ensure that username, password, domain and smtpAddress are set 
var service = new ExchangeService { 
    PreAuthenticate = true, 
    Credentials = new WebCredentials(username, password, domain), 
}; 
service.AutodiscoverUrl(smtpAddress, redirect => true); 

service.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, smtpAddress); 
var inbox = Folder.Bind(service, new FolderId(WellKnownFolderName.Inbox)); 
var fir = inbox.FindItems(new ItemView(10)); 
foreach (var ir in fir) { 
    var msg = EmailMessage.Bind(service, ir.Id, new PropertySet(EmailMessageSchema.UniqueBody)); 
    Console.WriteLine(msg.UniqueBody.Text); 
} 

msg.UniqueBody.Text 속성은 해당 메시지의 새로운 부분 만 포함되어 있습니다.

이 작업을 수행하는 더 좋은 방법이 있지만 Exchange Online에 대한 내 빠른 테스트에서 작동한다는 점에 유의하십시오.

+0

안녕하세요 프랭크, 저는 이미 이것을 시도했습니다. 아래에서 시도해주십시오. –

+0

원본 이메일의 몸 아래 '안녕 사용자 감사를 포함, 이메일로 Admin' ---------- 대답은 다음과 같습니다. 안녕하세요. –

+0

제가 말했듯이 :이 코드는 Exchange Online에서 작동합니다. 작동하지 않는다면 ** 상황을 재현 할 수있는 방법을 제공해야합니다. 질문을 편집하고 ** 문제를 재현하는 데 사용하는 ** 최소한의 코드를 제공하면됩니다. –

관련 문제