0

Lotus Notes用の簡単なメールクライアントを作成し、メッセージを暗号化しようとしています。C ++ APIヘルプによる私のアプローチは、次のとおりです。

LNMailMessage msg;
session.CreateMailMessage(&msg);     // Create new message
msg.Open();                          // Open message for editing

msg.SetRecipients(<myself>);         // Set recipients
msg.SetSubject("Encryption test");   // Set subject

if (msg.HasItem("Body"))             // Delete default body
    msg.DeleteItem("Body");

LNText body;                         // Create encrypted body field
body.SetValue("Encrypted text");
msg.CreateItem("Body", body, LNITEMFLAGS_ENCRYPT);

msg.Encrypt();                       // Encrypt message
msg.Send();                          // Send message

ここで、Encrypt()メソッドが例外をスローし、データベースが開いていないためにメッセージを暗号化できないという問題があります。

データベースが開いていないため、操作を実行できません

メッセージに署名しようとすると、同じエラーメッセージが表示されます。誰か知っていますか、私が間違っていることを知っていますか?どのデータベースを意味しますか?C APIを使用して、提案を歓迎します。多分これはヒントを与えます。

4

1 に答える 1

1

更新された回答

コメントで交換された情報を考慮して...

msg.encrypt()を使用する代わりに、「暗号化」というテキスト項目を値「1」に設定してみることができます。これは、送信時に電子メールメッセージを暗号化するようにSend()メソッドに指示するための代替メカニズムです。LotusScript / COM / Java API for NotesのEncryptOnSendプロパティは、実際にはこの項目を設定するための単なるショートカットです。暗号化はまだクライアント側で行われていると思いますが、回避策としてこれを試す価値があります。

つまり、LNMailMessageはLNDocumentを継承するため、EncryptOnSendと同等の機能は、msgをLNDocumentクラスにキャストし、LNDocument :: CreateItemを使用して、値が「1」の「Encrypt」という名前のテキストアイテムを作成することです。

元の回答

送信者と署名に使用する予定のIDファイルを使用してNotesクライアントがインストールおよび構成されているマシンでコードを実行していると思います。(インストールを完了するだけでは、必要なすべてのDLLが提供されますが、それだけでは不十分です。クライアントのセットアップも行う必要があります。)

クライアントの現在のロケーションドキュメントのメールファイルの場所、メールファイル、ホームサーバー、および(オプションの)ディレクトリサーバーの設定をチェックし、それらがすべて適切に設定されていることを確認します。

また、クライアントでメールファイルを開いて、署名および暗号化されたメッセージを手動で送信できるかどうかも確認します。

コードがサーバー上で実行されている場合は、サーバードキュメントの[基本]タブの下部にある[サーバーの場所の情報]セクションを確認する必要があります。

于 2012-10-27T03:44:26.890 に答える