Compartilhar via


Microsoft Exchange Web Services EWS (pt-BR)

Introdução

Neste artigo vamos descobrir como usar o Microsoft Exchange Web Services (EWS) para acessar informações do servidor Exchange. Esta API permite que, através do Visual Studio, seja possível acessar e manipular informações das contas do Exchange

O Microsoft Exchange Web Services (EWS) fornece uma interface gerenciada para o desenvolvimento de aplicativos client que precisam usar o Web Services Exchange. O EWS é baseado em protocolo SOAP e AutoDiscover, e fornece ao .Net Framework uma interface fácil de aprender, de usar e manter.

Para conhecer melhor o EWS, vamos fazer a manutenção da função Out-Of-Office(OOF), conforme imagem 1. Essa função permite configurar o email com avisos de afastamento durante determinado período que o usuário não estiver na corporação.

View
Imagem 1 – Função Assistente de Ausência Temporária(Out-Of-Office)

 

 

Instalando a API EWS

Bom, primeiramente precisamos instalar o Microsoft Exchange Web Services (EWS), para isso basta acessar o link Exchange Web Services Managed API.

Uma dificuldade que tive ao usar EWS foi de que esta DLL é compatível somente com projetos na versão .Net Framework 3.5, até descobrir levei algum tempo L.

Uma das principais classes do EWS é ExchangeService, através dela obtemos o acesso aos objetos do Exchange. Um dos parâmetros deste objeto é a versão do servidor Exchange, que pode ser: Exchange 2007 SP1, Exchange 2010 e 2010 SP1.

ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010);

Acessando o servidor Exchange

 

Para este exemplo vamos criar uma aplicação Windows Form no Visual Studio, iremos inserir um botão e um label no formulário principal.

Há duas formas de acessar o serviço EWS. Uma é fazer o acesso ao Webservice do Exchange, neste caso é necessário informar as credencias e url do serviço, fazendo a conexão diretamente a referência. A segunda forma é informar um usuário e deixar o EWS fazer o descobrimento do serviço. Veja nos exemplos abaixo as duas situações exemplificadas:

 

Neste trecho de código, que iremos colocar no botão que acabamos de inserir, estamos obtendo o serviço com as credenciais e URL do serviço:

service.Credentials = new NetworkCredential( "fulano", "senha123", "dominio" );

service.Url = new Uri("https://servidor.dominio.com.br/EWS/Exchange.asmx");

 

 

Outra forma de fazer o mesmo processo é através do serviço AutoDiscover:

service.AutodiscoverUrl(fulano@dominio.com.br);

Você pode optar por um deles!!!

Obtendo informações de uma conta de Email

Agora basta consultar as configurações OOF do usuário, para isso temos uma pequena parte de código colocada diretamente no codeBehide de uma aplicação.

OofSettings findResults = service.GetUserOofSettings("fulano@dominio.com.br");

 

string retorno = findResults.State.ToString();

DateTime dtInicio = findResults.Duration.StartTime;

DateTime dtFinal = findResults.Duration.EndTime;

 

StringBuilder status = new StringBuilder();

 

status.AppendLine("AutoReplayState: " + findResults.State.ToString());

status.AppendLine("End Time: " + findResults.Duration.EndTime.ToString());

status.AppendLine("External Audience: " + findResults.ExternalAudience.ToString());

status.AppendLine("External Message: " + findResults.ExternalReply.ToString());

status.AppendLine("InternalMessage: " + findResults.InternalReply.ToString());

status.AppendLine("Start Time: " + findResults.Duration.StartTime.ToString());

 

lblStatus.Text = status.ToString();

 

O código a seguir mostra como fazer o envio de email:

EmailMessage message = new EmailMessage(service);

message.Subject = "Enviando uma mensagem via EWS Managed API";

message.Body = "Através deste post eu descobri como é fácil usar EWS!";

message.ToRecipients.Add("eleriane@gmail.com");

message.Save();

 

message.SendAndSaveCopy();

Como resultado desse código temos as informações de configuração OOF (Imagem 2) do usuário e o envio de um email.
View

Referências:

http://msdn.microsoft.com/en-us/library/dd637749(v=EXCHG.80).aspx
http://www.microsoft.com/download/en/details.aspx?id=13480
http://nanebnu.wordpress.com/2011/08/09/acessando-exchange-2010-remotamente-via-powershell/
http://nanebnu.wordpress.com/2011/08/11/configurando-oof-no-exchange-2010-atraves-de-uma-aplicacao-c/

*Este artigo foi originalmente escrito por:
*Eleriane Cristina Costa
Blog: http://nanebnu.wordpress.com
Twitter:@benany