1

背景: 送信メールに添付ファイルを追加する Outlook アドインに取り組んでいます。すべてのバージョンの Outlook でサポートが必要です。

MailItem がデジタル署名で署名されている場合、メール アイテムを保存しない限り、この mailItem への添付ファイルの追加は通常失敗します。これにより、mailitem から署名が削除されます。私にとって、これはやや予想される動作です。ここで奇妙なことは何もありません。

問題は、ユーザーが (UI を介して、または Outlook の既定の動作として) デジタル署名をオンにしてから、再びオフにした場合です。MailItem は署名されていませんが、署名されているかのように動作します。この電子メールに添付ファイルを追加することはできません。

その理由を説明しているニュースグループの投稿を見つけました。Outlook API を通じて取得されたオブジェクトは、実際のオブジェクトではないようです。

http://www.tech-archive.net/Archive/Development/microsoft.public.win32.programmer.messaging/2006-02/msg00000.html

現時点では、この問題を適切に修正することをあきらめました。MailItem を一時ファイルに保存すると、これが修正されるように見えますが、パフォーマンス上の理由から、MailItem が署名付きから署名なしに移行したときにのみ保存した​​いと考えています。もう 1 つの許容される代替方法は、デジタル署名がデフォルトで有効になっているかどうかを検出することです。デジタル署名のデフォルト設定に関連するレジストリ エントリがありますが、これは単なる提案であり、電子メールがデフォルトで署名されているかどうかを正確に反映するものではありません。

何か案は?

4

2 に答える 2

1

償還 API ライブラリを使用して、C# からそのメソッドを呼び出すことができます。

また、拡張された mapi dll から PInvoke 署名を作成しようとしましたか?

于 2010-08-04T22:45:51.757 に答える
0

C++ で EMAPI を使用して IMessagePtr->SaveChanges() を呼び出すことができることがわかりました。これは非常にうまく機能しているようです。残念ながら、C# ではこれにアクセスできません。

于 2010-07-28T17:55:14.940 に答える