将 Java 邮件正文附件设置为密码保护

Making Java Mail Body attachment as password protect

我开发了一个 java 邮件 API 程序,它可以发送邮件并附加 PDF 文件,所以最后发送了一封附有 PDF 文件的邮件。

我想通过我的 java 程序本身将该 PDF 文件设置为密码保护。例如,当邮件接收者收到一封邮件时,接收者点击PDF文件。那时需要出现弹出框,用户必须输入先前生成的密码才能查看该 PDF 文件。我正在开发该功能,但似乎是与域一起构建的。请在这里帮助我。

 messageBodyPart = new MimeBodyPart();
            DataSource source = new FileDataSource("D:/C_App/PDF/"+Employeeid+ ".docx");//add file path
            messageBodyPart.setDataHandler(new DataHandler(source));
            messageBodyPart.setFileName(Employeeid);//file name to be displayed
            multipart.addBodyPart(messageBodyPart);
            message.setContent(multipart);

            byte[] USER = "password 1234".getBytes();
            byte[] OWNER = "password 1234".getBytes();
            encryptPdf(DataSource source, DataSource source) throws IOException, DocumentException {
                    PdfReader reader = new PdfReader(source);
                    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(source));
                    stamper.setEncryption(USER, OWNER,
                        PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
                    stamper.close();
                    reader.close();
                }
            Transport.send(message);

这段代码也给我语法错误。任何帮助,将不胜感激。 谢谢。

encryptPdf(DataSource source, DataSource source) throws IOException, DocumentException {
                    PdfReader reader = new PdfReader(source);
                    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(source));
                    stamper.setEncryption(USER, OWNER,
                        PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128 | PdfWriter.DO_NOT_ENCRYPT_METADATA);
                    stamper.close();
                    reader.close();
                }
  1. 这是一个方法声明部分,你应该遵循java 方法声明约定,如访问范围、return 类型。
  2. 我在您的代码中看不到对 encryptPdf() 方法的调用。