0

我一直在努力解决我的问题,但我无法 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:在 net.suberic.crypto.EncryptionManager.getEncryptionUtils(EncryptionManager.java:99) 处没有为 S/MIME 配置提供程序

我从这个链接中举了一个例子:

http://blog.jservlet.com/post/2008/01/03/How-to-use-Javamail-Crypto-with-S/MIME-provider?pub=0#pr

我希望你能帮助我。我有两天时间遇到这个问题,我不知道问题出在哪里。我尝试做的是将 SSL 证书附加到我的邮件中,这是我的问题的简历。如果有其他方法可以解决它,我将不胜感激。

提前致谢。

问候。

4

2 回答 2

0

此错误java.security.NoSuchProviderException表示未找到提供此服务的组件。
我不确定 java 的默认提供程序是否确实提供了这个。如果您已经切换到不受限制的文件,我猜您需要第三方提供商。
使用Bouncy Castle并通过快速谷歌搜索,在您的情况下需要提及以下内容(对于像您这样的问题):

javamail-crypto.jar  

javamail-crypto-bouncycastle-smime.jar  

and bouncy castle libraries.
于 2012-10-16T20:31:58.590 回答
0

当我使用 BouncyCastle 库“..jdk15on-149.jar”时,我遇到了同样的异常。但是使用旧版本“..jdk16-1.46.jar”它可以工作:)

于 2013-08-22T10:09:31.467 回答