Pergunta

Estou escrevendo um aplicativo CMS em PHP e um dos requisitos é que ele seja capaz de fazer interface com o servidor Exchange do cliente.Já escrevi essa funcionalidade algumas vezes e sempre usei WebDAV fazer isso, mas agora estou me afastando disso.

Executarei o site no IIS OU Apache (sem preferência) no Windows Server 2008.Algumas coisas que eu precisaria fazer incluem adicionar contatos ao catálogo de endereços de um determinado usuário, enviar e-mails para um determinado usuário e gerar relatórios sobre os contatos de um usuário.

Tudo isso é muito fácil de fazer com o WebDAV, mas se houver uma maneira melhor que não exija nenhuma funcionalidade, provavelmente será obsoleta em breve.

Alguma ideia?

Atualizar:

Justin, adoro a ideia de usar objetos com, só me preocupo em manter um terceiro produto para fazer tudo funcionar...

John, posso escrever um serviço web em C# para fazer interface com essas funções e acessá-lo com meu aplicativo PHP, mas também está um pouco fora do caminho.

Até agora, não estou 100% convencido de que algum deles seja melhor que o WebDAV...

Alguém pode me mostrar onde estou sendo bobo?

Foi útil?

Solução

Não usei PHP para fazer isso, mas tenho experiência no uso de C# para conseguir a mesma coisa.

A API do Outlook é uma forma de automatizar o Outlook em vez de conectar-se diretamente ao Exchange.Eu já adotei essa abordagem em um aplicativo C# e ela funciona, embora possa apresentar erros.

Se desejar se conectar diretamente ao servidor Exchange, você precisará pesquisar o MAPI estendido.

No passado eu usei esse wrapper MAPIEx:Wrapper MAPI estendido.

É um projeto C#, mas acredito que você pode usar algum código .NET em um servidor Windows PHP5.Como alternativa, ele possui uma DLL central C++ que você pode usar.Achei que é muito bom e existem alguns bons exemplos de aplicativos.

Atualizar:

Desculpe pela demora, ainda não há maneira atual de acompanhar as postagens.

Concordo que adicionar mais camadas ao seu aplicativo e confiar em código de terceiros pode ser assustador (e com razão).

Hoje li outro postagem interessante marcado como MAPI que trata de um assunto diferente.O principal aqui, porém, é que ele está vinculado a este importante artigo da MS.Até agora, não tinha conhecimento dos problemas de uso de código gerenciado para fazer interface com MAPI, embora o código C++ no componente não deva ser afetado por esse erro, pois não é gerenciado.

Esta entrada do blog também sugere outras maneiras de se conectar ao servidor MAPI/Exchange.Neste caso devido a estes novos fatos http://us3.php.net/imap pode ser a resposta sugerida pelo outro usuário.

Outras dicas

Seu cliente está usando o Exchange 2007?Se sim, eu daria uma olhada Serviços Web do Exchange.Caso contrário, por mais complicado que seja, acho que o WebDAV é sua melhor aposta.

Pessoalmente, não gosto de usar a rota do objeto COM Outlook.Application, pois seus prompts de segurança ("Um aplicativo está tentando acessar seus contatos.Permitir isto?", etc.) pode causar problemas em um servidor.Também acho que seria difícil realizar tarefas semelhantes a representação usando o Outlook, como enviar e-mails para um determinado usuário.

Eu lancei uma biblioteca licenciada pelo MIT de código aberto que permite realizar algumas operações básicas em PHP usando Exchange Web Services.

Serviços Web do Exchange para PHP

Eu só testei no Linux, mas não vejo nenhuma razão para que ele não funcione também em uma instalação do PHP no Windows.

Não posso recomendar o de Dmitry Streblechenko Objetos de dados de resgate biblioteca altamente suficiente.É um componente COM que fornece uma API sensata para Extended MAPI e é uma alegria de usar.As metas da API do Exchange passam de uma versão para a próxima:"Usa-os:dirigir!Não, use WebDAV!Não, use exoledb!… Não, use serviços da web! ” com a única constante sendo um bom e velho mapi.

Não sou um desenvolvedor de PHP, mas o Google diz que o PHP 5+ pode instanciar componentes COM.Se você puder instalar o Outlook em uma caixa, poderá escrever um serviço web PHP em torno do componente COM para lidar com as solicitações necessárias.

$outlook = COM("Outlook.Application")

Referência da API do Outlook

Eu recomendaria usar "Serviços da Web do Exchange PHP" ou curto php-ews.

Quantidade razoável de documentação sob o wiki, me ajudou muito.

Esse Zarafa PHP MAPI extensão parece que pode funcionar.

Eu daria uma olhada no IMAP

IMAP, POP3 e NNTP

https://github.com/Garethp/php-ews

Foi atualizado pela última vez há 3 meses, por isso é mantido

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top