Я написал простой почтовый клиент для 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. Может быть, это дает подсказку.
Обновленный ответ
Ввиду обмена информацией в комментариях …
Вместо использования msg.encrypt () вы можете попробовать установить текстовый элемент с именем «Encrypt» в значение «1». Это альтернативный механизм для указания метода Send () шифровать почтовые сообщения при их отправке. Свойство EncryptOnSend в LotusScript / COM / Java API для Notes на самом деле является просто ярлыком для установки этого элемента. Я полагаю, что шифрование все еще происходит на стороне клиента, но стоит попробовать это в качестве обходного пути.
То есть, LNMailMessage наследуется от LNDocument, поэтому эквивалентом EncryptOnSend будет преобразование сообщения в класс LNDocument, а затем использование LNDocument :: CreateItem для создания текстового элемента с именем «Encrypt» со значением «1».
Оригинальный ответ
Я предполагаю, что вы выполняете свой код на компьютере, на котором установлен клиент Notes и настроен файл идентификатора, который предполагается использовать для отправителя и для подписи. (Недостаточно просто завершить установку, даже если это дает вам все необходимые библиотеки DLL. Вам также необходимо пройти настройку клиента.)
Я бы проверил местоположение почтового файла, почтовый файл, домашний сервер и (необязательно) параметры сервера каталогов в текущем документе местоположения клиента и убедился, что все они установлены правильно.
Я также проверил бы, можете ли вы открыть почтовый файл на клиенте и вручную отправлять подписанные и зашифрованные сообщения.
Если ваш код выполняется на сервере, в нижней части вкладки «Основные сведения» в документе «Сервер» есть раздел «Информация о расположении сервера», который необходимо проверить.
Других решений пока нет …