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

どうか助けていただければ幸いです。この問題で 2 日が経過しましたが、どこに問題があるのか​​わかりません。私がやろうとしているのは、問題の履歴書である 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 に答える