我一直试图解决我的问题,但我不能u_u
嗯,让我们看看。我需要发送一封电子邮件(我可以做),但最后一个要求是我需要附加证书(SSL),这就是问题所在。这是我的代码: // @param _smimePw keystore password = "techbrainwave"
// @param _alias keystore password = "certificatekey"
// get the S/MIME EncryptionUtilities
##EncryptionUtils smimeUtils = EncryptionManager.getEncryptionUtils(EncryptionManager.SMIME);##
// load the S/MIME keystore from the given file.
char[] smimePw = new String("techbrainwave").toCharArray();
EncryptionKeyManager smimeKeyMgr = smimeUtils.createKeyManager();
smimeKeyMgr.loadPrivateKeystore(new FileInputStream(new File("C:\\j2sdk1.4.2_18\\bin\\truststore.jks")), smimePw);
// get our keys.
java.security.Key smimeKey = smimeKeyMgr.getPrivateKey("certificatekey", smimePw);
msg.setContent(parts);
// write smime message.
MimeMessage smimeSignedMsg = smimeUtils.signMessage(mailSession, msg, smimeKey);
Transport tr = mailSession.getTransport("smtp");
tr.connect(SMTPServer, "", "");
smimeSignedMsg.saveChanges(); // don't forget this
tr.sendMessage(smimeSignedMsg, smimeSignedMsg.getAllRecipients());
tr.close();
标记的行是以下异常使我的代码失效的地方:
java.security.NoSuchProviderException:没有为S / MIME配置的提供程序 at net.suberic.crypto.EncryptionManager.getEncryptionUtils(EncryptionManager.java:99)
我从这个链接中拿了例子:
http://blog.jservlet.com/post/2008/01/03/How-to-use-Javamail-Crypto-with-S/MIME-provider?pub=0#pr
我希望你能帮助我。我有两天这个问题,我不知道问题出在哪里。我尝试做的是将SSL证书附加到我的邮件,这是我的问题的简历。如果有另一种方法可以解决它,我将很高兴看到它。
提前致谢。
问候。
答案 0 :(得分:0)
此错误java.security.NoSuchProviderException
表示未找到提供此服务的组件
我不确定java的默认提供程序是否真的提供此功能。如果您已经交换到不受限制的文件,我猜您需要第三方提供商
使用Bouncy Castle
并通过快速谷歌搜索在您的案例中需要mention以下(对于像您这样的问题):
javamail-crypto.jar
javamail-crypto-bouncycastle-smime.jar
and bouncy castle libraries.
答案 1 :(得分:0)
当我使用BouncyCastle库“..jdk15on-149.jar”时,我遇到了同样的异常。 但是使用旧版本“..jdk16-1.46.jar”它起作用了:)