有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用EWS API发送带有附件的数字签名邮件

我正在尝试使用EWS发送数字签名邮件,我已经实现了邮件签名代码。邮件成功发送,但内容为空,下面是代码,我做错了什么。感谢您的帮助

**

public static EmailMessage sign(EmailMessageContent messageContent)
            throws Exception {
        EmailMessage signedMessage = messageContent.getEmailMessage();
        
        char[] smimePw = messageContent.getPassword().toCharArray();
        
        CMSProcessableByteArray cmsProcessableByteArray = new CMSProcessableByteArray(signedMessage.getBody().toString().getBytes());
        try{            
            if(signer==null){
                signer = getSigner(messageContent, smimePw);
            }
            CMSSignedData cmsSignedData = signer.generate(cmsProcessableByteArray,"BC");
            MimeContent content = new MimeContent("UTF-8", cmsSignedData.getEncoded());
            signedMessage.setMimeContent(content);  
            signedMessage.setItemClass("IPM.Note.SMIME");
            
        }catch(Exception exp){
            LOGGER.error("In sign() method", exp);
        }
        return signedMessage;
    }
private static CMSSignedDataGenerator getSigner(EmailMessageContent messageContent,
            char[] smimePw)
            throws KeyStoreException, IOException, NoSuchAlgorithmException,
            CertificateException, Exception, UnrecoverableKeyException,
            InvalidAlgorithmParameterException, NoSuchProviderException,
            CertStoreException, SMIMEException {
        InputStream is = null;
        CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
        try{
            is = getCertFile(messageContent.getCertFile());         
            KeyStore keystore = KeyStore.getInstance("PKCS12");
            keystore.load(is, smimePw);
            String keyAlias = getAlias(keystore); 
            if (keyAlias == null) {  
                System.err.println();  
                throw new Exception("Can't find an alias."); 
            }
            PrivateKey privateKey = (PrivateKey)keystore.getKey(keyAlias,   smimePw); 
            if (privateKey == null) {  
                throw new Exception("No private key for alias: " + keyAlias); 
            }
            Certificate[] certificates = getCertificates(keystore, keyAlias);
            //Certificate[] 
            gen.addSigner(privateKey, (X509Certificate) certificates[0], CMSSignedGenerator.DIGEST_MD5);
            List<Certificate> certList = Arrays.asList(certificates);
            CertStore certs = CertStore.getInstance("Collection",   new CollectionCertStoreParameters(certList), "BC"); 
            gen.addCertificatesAndCRLs(certs);  
        }finally{
            if(is!=null)is.close();
        }
        return gen;
    }

**


共 (0) 个答案