PHP を使用して Exchange にアクセスする最良の方法は?
-
08-06-2019 - |
質問
PHP で CMS アプリケーションを作成しています。要件の 1 つは、顧客の Exchange サーバーと接続できる必要があることです。私はこの機能を以前に何度か作成し、常に使用してきました。 WebDAV それをするつもりですが、今はそれから遠ざかっています。
Windows Server 2008 上の IIS または Apache (優先なし) でサイトを実行する予定です。必要な作業としては、特定のユーザーのアドレス帳に連絡先を追加すること、特定のユーザーとして電子メールを送信すること、ユーザーの連絡先に関するレポートを実行することが含まれます。
これらはすべて、WebDAV を使用すると非常に簡単に実行できますが、近いうちに非推奨になる可能性のある機能を必要としない、より良い方法があれば。
何か案は?
アップデート:
Justin、私は com オブジェクトを使用するというアイデアが大好きですが、すべてを機能させるために 3 番目の製品をメンテナンスすることだけを心配しています...
ジョン、これらの関数のインターフェイスとなる Web サービスを C# で作成し、PHP アプリでアクセスすることはできますが、少し邪魔になりません。
今のところ、これらのどちらが WebDAV よりも優れているとは 100% 確信できません...
誰か私が愚かなところを教えてくれませんか?
解決
私はこれを行うために PHP を使用したことはありませんが、C# を使用して同じことを実現した経験はあります。
Outlook API は、Exchange に直接接続するのではなく、Outlook を自動化する方法です。以前に C# アプリケーションでこのアプローチを採用したことがありますが、バグがある可能性もありますが、機能します。
Exchange サーバーに直接接続したい場合は、拡張 MAPI について調べる必要があります。
以前はこのラッパーを使用していました MAPIEx:拡張MAPIラッパー.
これは C# プロジェクトですが、PHP5 Windows サーバー上で一部の .NET コードを使用できると思います。あるいは、使用できる C++ コア DLL もあります。これは非常に優れていることがわかり、いくつかの優れたアプリケーション例があります。
アップデート:
遅れて申し訳ありませんが、現時点では投稿を追跡する方法がまだありません。
アプリケーションにさらにレイヤーを追加したり、サードパーティのコードに依存したりするのは恐ろしいことであることに私も同意します (そしてそれは当然のことです)。
今日はもう一つ読みました 興味深い投稿 別の主題に関する MAPI としてタグ付けされています。ただし、ここで重要なことは、次のことにリンクしているということです。 この重要な MS 記事. 。コンポーネント内の C++ コードはアンマネージドであるため、このエラーの影響を受けないはずですが、マネージド コードを使用して MAPI に接続する場合には、これまで問題に気づきませんでした。
このブログ エントリでは、MAPI/Exchange サーバーに接続する他の方法も提案しています。今回の場合、これらの新たな事実により、 http://us3.php.net/imap 他のユーザーが提案した答えになる可能性があります。
他のヒント
あなたの顧客は Exchange 2007 を使用していますか?もしそうなら、見てみたいです Exchange Web サービス. 。そうでない場合は、面倒なことではありますが、WebDAV が最善の策だと思います。
個人的には、セキュリティ プロンプト (「アプリケーションが連絡先にアクセスしようとしています。これを許可しますか?」など) サーバーで問題が発生する可能性があります。また、特定のユーザーとしてメールを送信するなど、Outlook を使用して偽装のようなタスクを実行するのは難しいと思います。
Exchange Web サービスを使用して PHP でいくつかの基本操作を実行できるオープンソースの MIT ライセンス ライブラリをリリースしました。
私は Linux でのみテストしましたが、PHP の Windows インストールでも同様に動作しない理由はわかりません。
ドミトリー・ストレブレチェンコはお勧めできません 償還データオブジェクト ライブラリは十分に高いです。これは、拡張 MAPI に適切な API を提供する COM コンポーネントであり、楽しく使用できます。Exchange API の目標は、あるリリースから次のリリースに移行します。「M を使用してください:ドライブ!いいえ、WebDAV を使用してください。いいえ、exoledbを使用してください!…いいえ、Webサービスを使用してください!」唯一の定数は古き良き時代です。
私は PHP 開発者ではありませんが、Google によると、PHP 5 以降では COM コンポーネントをインスタンス化できるそうです。Outlook をボックスにインストールできる場合は、必要な要求を処理するために COM コンポーネントの周囲に PHP Web サービスを作成できます。
$outlook = COM("Outlook.Application")
使用することをお勧めします "PHP Exchange Web サービス" または短い php-ews。
に基づく相当量の文書 ウィキ, 、とても助かりました。
これ ザラファ PHP MAPI 拡張機能は機能するようです。
IMAPを調べてみます
https://github.com/Garethp/php-ews
最後に更新されたのは 3 か月前なので、維持されています