无法通过Domino服务器查看通过Java程序发送的加密邮件
我通过编写java mail sender程序通过Domino服务器发送电子邮件。 以前我使用notes dll,但现在我已切换到iiop。从那时起,我无法看到我发送的加密邮件的内容。最近的人都能很好地阅读邮件,只有我一个人。但我应该可以看到我发送的加密邮件 当我通过LotusNotes客户端发送电子邮件时,它就工作了。 我忘了在代码中设置什么了吗 使用的代码如下:无法通过Domino服务器查看通过Java程序发送的加密邮件,java,email,lotus-notes,lotus-domino,interop-domino,Java,Email,Lotus Notes,Lotus Domino,Interop Domino,我通过编写java mail sender程序通过Domino服务器发送电子邮件。 以前我使用notes dll,但现在我已切换到iiop。从那时起,我无法看到我发送的加密邮件的内容。最近的人都能很好地阅读邮件,只有我一个人。但我应该可以看到我发送的加密邮件 当我通过LotusNotes客户端发送电子邮件时,它就工作了。 我忘了在代码中设置什么了吗 使用的代码如下: public boolean sendMail(boolean schedule, String subject, String
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();
}
}
请让我知道我错过了什么
谢谢您正在呼叫lDoc.setEncryptionSendTrue和lDoc.encrypt。加密方法通常与setEncryptionKeys一起使用以进行密钥加密。电子邮件使用公钥加密 encrypt方法的帮助说明 由于邮件加密的工作方式不同,如果需要,请不要使用此方法 要邮寄加密的文档。相反,请设置EncryptOnSend 属性设置为True,并使用Send方法
尝试取消对lDoc.encrypt的调用。我的猜测是,通过调用它,您正在更改文档内部状态中的某些内容,可能创建了一个空的secretincryptionkeys项,在保存已发送消息的副本时,它会把事情弄得一团糟 谢谢@Richard,我明天会检查这个,然后告诉你是否有效。希望是这样。谢谢你的提示:非常好用。感谢这样做,即使是电子邮件代表也可以阅读加密邮件,但事实并非如此。电子邮件代表应该只查看发件人的详细信息,主题,而不是正文。那么还有什么需要做的吗?保存的电子邮件的加密通常由用户选项控制。在Notes 9中,这将位于“用户安全”对话框的“邮件”选项卡上,该选项卡上的复选框标记为“加密您发送的邮件的已保存副本”。此设置适用于用户发送的所有邮件,因此,如果您的目标是为所有用户加密保存的副本,而不管设置如何,那么我不确定如何继续。IIRC,是路由器保存发送的副本,而不是您的代码,一件值得尝试的事情是创建一个PublicEncryptionKeys项并在canonical CN=。。。按它的形式。