問題タブ [mapi]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHP を使用して Exchange にアクセスする最良の方法は?
PHP で CMS アプリケーションを作成していますが、要件の 1 つは、顧客の Exchange サーバーとインターフェイスできる必要があるということです。私はこの機能を以前に数回書き上げており、常にWebDAVを使用してそれを実行してきましたが、今はそれから離れています。
Windows Server 2008 の IIS または Apache (優先度なし) でサイトを実行します。特定のユーザーのアドレス帳に連絡先を追加する、特定のユーザーとして電子メールを送信する、特定のユーザーの連絡先に関するレポートを実行するなど、いくつかの作業を行う必要があります。ユーザー。
これらはすべて WebDAV を使用すると非常に簡単に実行できますが、機能を必要としないより良い方法があれば、すぐに廃止される可能性があります。
何か案は?
アップデート:
ジャスティン、私は com オブジェクトを使用するというアイデアが大好きです。すべてを機能させるために 3 番目の製品を維持することを心配しています...
ジョン、私は C# で Web サービスを作成して、これらの関数とやり取りし、PHP アプリでアクセスすることができますが、それも少し面倒です。
これまでのところ、これらのいずれかが WebDAV よりも優れていると 100% 確信しているわけではありません...
誰か私がばかげているところを見せてもらえますか?
.net - MAPI とマネージ コード エクスペリエンス?
マネージ コード内からの MAPI 関数の使用は、公式にはサポートされていません。どうやら、MAPI は独自のメモリ管理を使用しており、マネージ コード内でクラッシュして焼き付きます (こちらとこちらを参照) 。
やりたいことは、件名、本文、および 1 つ以上の添付ファイルを含む既定の電子メール クライアントを起動することだけです。
だから私はMAPISendDocumentsを調べてきましたが、うまくいくようです。しかし、実際に本番コードで関数を使用する勇気が得られませんでした。
この機能をよく使った人はいますか?怖い話はありますか?
PS。いいえ、添付ファイルのコマンド ライン引数を指定して Outlook.exe を shellExecute しません。
PPS。添付ファイルのサポートは必須であるため、 Mailto : ソリューションは私には適していません。
performance - 指定された PR_SEARCH_KEY を持つすべてのメッセージを検索する
query
で特定の値を持つすべてのメッセージを見つけるには、Exchange サーバーが必要PR_SEARCH_KEY
です。すべてのメールボックスを開いて反復処理する必要がありますか? それとも、より高速な解決策がありますか?
編集:これは、ジャーナル メールボックスから受け取ったメッセージのすべてのコピーの件名に何かを追加する必要があるプログラム用です。
c++ - IExchangeManageStore :: GetMailboxTableにフィードするインフォメーションストアの識別名を見つける方法は?
特定のインフォメーションストア内のすべてのメールボックスを開くためのサンプルコードが記載されたMicrosoftナレッジベースの記事があります。これまでのところ機能します(VC ++ 6.0より新しいコンパイラで少しコピー&ペーストする必要があります)。
ある時点で、インフォメーションストアの識別名を使用してIExchangeManageStore::GetMailboxTableを呼び出します。Exchange 2007トライアル仮想サーバーイメージの場合、次のようになります。
OutlookSpyを使用し、IMsgStoreとIExchangeManageStoreをクリックすると、「サーバーDN:」の横に目的の文字列が表示されます。
ユーザーにこれを設定ファイルに入れるように強制するのは避けたいです。では、OutlookSpyでそれができる場合、アプリケーションは、現在開いているメールボックスが存在するインフォメーションストアの識別名をどのように見つけることができますか?
vb6 - MAPI-MIME 変換用 IDL の作成
IConverterSession インターフェイスの IDL を作成しようとしていますが、MIMETOMAPIメソッドの定義に混乱しています。パラメーターを [out] として指定しLPMESSAGE pmsg
ますが、コメントには、読み込まれる MAPI メッセージへのポインターが示されています。
関数がMAPIメッセージオブジェクトを割り当ててポインターを設定するかどうかは不明ですが、その場合、それはMESSAGEのポインターへのポインターであってはなりませんか? または、呼び出し元のコードが既にメッセージ オブジェクトをインスタンス化していると予想される場合、[in] ではなく [out] とマークされているのはなぜですか?
最終的に、このインターフェイスは VB6 コードから使用されるため、[in] または [in, out] のいずれかである必要がありますが、使用した IDL であるかどうかを知る必要があります。
また
c++ - MAPI を使用してアプリのアドレス帳を同期するにはどうすればよいですか?
私が取り組んでいるシステムにはアドレス帳が含まれています。MAPI を介してアドレスを現在のユーザーのアドレス帳と同期するサンプル コードを探しています。双方向同期が必要です。
このための使いやすい関数を備えたオープンソース ライブラリをご存じでしたら、ぜひお知らせください。オープンソースではないライブラリを知っていれば、それも問題ありません。最適なのは、ライセンスによって独自のソリューションで使用できるライブラリです。
そして、MAPI プロバイダーで自分のアドレス帳を簡単に公開できるライブラリを知っているとしたら、それを知りたくてたまりません!
外部のアドレス帳を使用し、独自のアドレス帳を捨てるという選択肢は、お客様に役立つものではありません。
もちろん、バニラ MAPI を使用した優れた実用的なコード サンプルも使用できます。;-)
c++ - MAPI 経由で Exchange サーバーの時刻を読み取る
プログラム (C++、MAPI) がメッセージを処理する前に、Exchange メールボックス内のメッセージの経過時間を計算して、メッセージが少なくとも 1 分間そこに留まっていることを確認したいと考えています。このようにして、私たちが使用するスパム フィルターは、その仕事をするのに十分な時間を確保する必要があります。
プログラムを実行する PC の時刻は、Exchange サーバーが使用する時刻と異なる場合があるため、プログラムは MAPI を介してサーバー時刻を読み取る必要があります。
それに対するエレガントな解決策はありますか?私が考えることができる1つの方法は、一部のアイテムを変更してすぐにそのPR_LAST_MODIFICATION_TIMEを読み取ることですが、それは避けたいと思います。
編集:
私たちのプログラムは、10 分ごとに実行され、ジャーナル メールボックスを読み取るバッチ ジョブです。
outlook - Outlook 連絡先の同期 - 同期する正しいオブジェクトを特定する方法は?
Outlook の連絡先を CDO 経由でデータベースに同期する (および戻す) Web アプリケーションがあります。DB には、すべての連絡先が 1 回だけ含まれ (少なくとも理論的には、もちろんダブレットが発生します)、Outlook で特定の連絡先を持っているユーザーの数に関係なく (Interaction や類似の製品など)、連絡先の単一の変更点が提供されます。
同期プロセスは自動ではなく、ユーザーが初期化します。ユーザーが連絡先の同期を決定する前に、任意のタイムスパンが経過する可能性があります。これらの連絡先のサブセットは、その間に他のユーザーによって更新された可能性があります。
通常、これは問題なく実行されますが、この根本的な問題を解決できたことはありません。
メールボックス内の連絡先オブジェクトを間違いなく特定するにはどうすればよいですか?
- に頼ることはできません
PR_ENTRYID
。このプロパティは、連絡先の移動またはメールボックスの移動で変更されます。 - 自分の ID (DB テーブル ID など) は連絡先と共にコピーされるため、信頼できません。
- 名前や電子メール アドレスなどのフィールドは絶対に信頼できません。変更や更新の対象となります。
現在、1 (優先) と 2 (フォールバック) の組み合わせを使用しています。しかし、必然的に、ユーザーは間違った連絡先に同期するという問題に遭遇することがあります。これは、指定された には 1 つも存在せずPR_ENTRYID
、同じ DB ID を持つ 2 つの連絡先があり、そのうち間違った連絡先が選択されているためです。
多くの Outlook 同期製品が出回っているので、問題は解決できるはずです。
c# - Outlook PropertyFrom MAPI スキーマ プロパティ ID
MAPI スキーマ プロパティから実際のプロパティ名を取得しようとしています。MAPI スキーマ プロパティ " http://schemas.microsoft.com/mapi/proptag/0x67AA000B " を取得していますが、これが対応するフィールド (IE Anniversary、BusinessAddress など) を知りたいです。任意の洞察をいただければ幸いです。
outlook - MAPI: PR_SEARCH_KEY のフォーマット
MAPI プロパティの形式を知っている人はいますPR_SEARCH_KEY
か?
オンラインドキュメントには、これについて次のように書かれています。
検索キーは、アドレス タイプ (大文字)、コロン文字 ':'、標準形式の電子メール アドレス、および終端の null 文字を連結することによって形成されます。
そして、交換文書MS-OXOABK には次のように書かれています。
PtypBinary 型の PidTagSearchKey プロパティは、ASCII 文字列 "EX: " を連結して形成されたバイナリ値であり、その後にすべて大文字に変換されたオブジェクトの DN と、その後にゼロ バイト値が続きます。
ただし、このプロパティで見たすべての MAPI メッセージには、GUID のように見えるバイナリ 16 バイト シーケンスのようなものがあります。他の誰かがそれについてもっと情報を持っていますか? 常に16バイトですか?
ありがとう!