Невозможно увидеть отправленную почту с помощью Encyrpted через программу Java через Domino Sever
Я отправляю электронную почту через Domino Server, написав программу отправки сообщений Java. Ранее я использовал dll notes, но теперь я перешел на iiop. С тех пор я не могу видеть содержимое отправленной Зашифрованной почты. Получатели могут читать почту очень хорошо, это только я. Но я должен видеть мою отправленную зашифрованную почту.
Когда я отправляю электронную почту через клиент Lotus Notes, это работает. Я забыл установить что-нибудь в коде или что?
Код используется ниже:
public boolean sendMail(boolean schedule, String subject, String body, List<String> recipients, boolean doEncryt, boolean html, List<Binary> binaries, List<String> cc, List<String> bcc, List<String> replyTo)
{
String errorTxt = "";
boolean diiop = true;
try
{
Session session = null;
// if (diiop)
try {
session = NotesFactory.createSession(NOTESMAILSERVER,"SOMEID",NOTESIDPW);
diiop = true;
}
// else
catch (Exception exc){
NotesThread.sinitThread();
session = NotesFactory.createSession();
Registration lRegistration = session.createRegistration();
lRegistration.switchToID(ResourceHelper.findResource(NOTESIDPATH).getFile().getAbsolutePath(), NOTESIDPW);
diiop = false;
}
DbDirectory dir = session.getDbDirectory(NOTESMAILSERVER);
Database lDb = dir.openMailDatabase();
session.setConvertMime(true);
session.setConvertMIME(true);
Document lDoc = lDb.createDocument();
lDoc.replaceItemValue("Form" ,"Memo");
//set receip email addresses
fillAdressItem(lDoc, recipients, "SendTo");
fillAdressItem(lDoc, cc, "CopyTo");
fillAdressItem(lDoc, bcc, "BlindCopyTo");
//set subject
lDoc.replaceItemValue("Subject" , subject);
//set sender
lDoc.replaceItemValue("From", this.FROM);
lDoc.replaceItemValue("Principal", this.FROM);
//prepare body text
prepareRichTextBody(body, html, session, lDoc);
//handle attachments
RichTextItem lAttachmentItem = lDoc.createRichTextItem("attachments");
if(binaries != null)
{
for(Binary binary : binaries)
{
File tempFile = new File(getTempFolder(),binary.getName());
IOUtils.copyLarge(binary.getDataInputStream(), new FileOutputStream(tempFile));
lAttachmentItem.embedObject(EmbeddedObject.EMBED_ATTACHMENT, "", tempFile.getPath(), tempFile.getName());
tempFile.delete();
}
}
//save if aSaveOnSend is true
lDoc.setSaveMessageOnSend(true);
//encrypt document if requested
if(doEncryt)
{
lDoc.setEncryptOnSend(true);
lDoc.encrypt();
}
//send mail
lDoc.send();
return(true);
}
catch(Throwable lE)
{
}
finally
{
if (!diiop) NotesThread.stermThread();
}
}
Пожалуйста, дайте мне знать, что мне не хватает.
Спасибо
1 ответ
Вы вызываете как lDoc.setEncryptOnSend(true), так и lDoc.encrypt(). Метод encrypt () обычно используется с setEncryptionKeys () для шифрования секретным ключом. Электронная почта использует шифрование с открытым ключом.
Справка по состояниям метода encrypt ()
Поскольку шифрование почты работает по-другому, не используйте этот метод, если вы хотите отправить зашифрованный документ по почте. Вместо этого установите для свойства EncryptOnSend значение True и используйте метод Send.
Попробуйте избавиться от вызова lDoc.encrypt(). Я предполагаю, что, вызывая его, вы изменяете что-то во внутреннем состоянии документа (возможно, создаете пустой элемент SecretEncryptionKeys), что приводит к путанице при сохранении вашей копии отправленного сообщения.