Зашифровать заметку с помощью Lotus Notes API

Я написал простой почтовый клиент для 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. Может быть, это дает подсказку.

0

Решение

Обновленный ответ

Ввиду обмена информацией в комментариях …

Вместо использования msg.encrypt () вы можете попробовать установить текстовый элемент с именем «Encrypt» в значение «1». Это альтернативный механизм для указания метода Send () шифровать почтовые сообщения при их отправке. Свойство EncryptOnSend в LotusScript / COM / Java API для Notes на самом деле является просто ярлыком для установки этого элемента. Я полагаю, что шифрование все еще происходит на стороне клиента, но стоит попробовать это в качестве обходного пути.

То есть, LNMailMessage наследуется от LNDocument, поэтому эквивалентом EncryptOnSend будет преобразование сообщения в класс LNDocument, а затем использование LNDocument :: CreateItem для создания текстового элемента с именем «Encrypt» со значением «1».

Оригинальный ответ

Я предполагаю, что вы выполняете свой код на компьютере, на котором установлен клиент Notes и настроен файл идентификатора, который предполагается использовать для отправителя и для подписи. (Недостаточно просто завершить установку, даже если это дает вам все необходимые библиотеки DLL. Вам также необходимо пройти настройку клиента.)

Я бы проверил местоположение почтового файла, почтовый файл, домашний сервер и (необязательно) параметры сервера каталогов в текущем документе местоположения клиента и убедился, что все они установлены правильно.

Я также проверил бы, можете ли вы открыть почтовый файл на клиенте и вручную отправлять подписанные и зашифрованные сообщения.

Если ваш код выполняется на сервере, в нижней части вкладки «Основные сведения» в документе «Сервер» есть раздел «Информация о расположении сервера», который необходимо проверить.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]