通过java将pdf作为附件发送

通过java将pdf作为附件发送,java,pdf,jakarta-mail,Java,Pdf,Jakarta Mail,我有下面的java程序,该程序将pdf文件作为附件发送,该pdf文件从我的本地系统读取,然后生成一封邮件,其中pdf文件被附加,然后发送 下面是代码,我现在有一个查询程序,正如您在我的代码中看到的,文件从本地系统读取,最终转换并存储在字节数组中,但当我发送邮件时,它接受 文件名作为字符串 所以我只是想发送一个加密的文件,它存储在字节数组中 请告知如何发送与字节数组本身相同的文件 // attachment part MimeBodyPart attachPart = new MimeB

我有下面的java程序,该程序将pdf文件作为附件发送,该pdf文件从我的本地系统读取,然后生成一封邮件,其中pdf文件被附加,然后发送

下面是代码,我现在有一个查询程序,正如您在我的代码中看到的,文件从本地系统读取,最终转换并存储在字节数组中,但当我发送邮件时,它接受 文件名作为字符串 所以我只是想发送一个加密的文件,它存储在字节数组中 请告知如何发送与字节数组本身相同的文件

 //  attachment part
   MimeBodyPart attachPart = new MimeBodyPart();
  String filename = "c:\\index.pdf";

String filename_src = "c:\\index.pdf";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfReader reader = new PdfReader(filename_src);
PdfStamper stamper = new PdfStamper(reader, baos);
// Do the encrypting stuff
stamper.close();
byte[] result = baos.toByteArray(); //***** encrypted file in byte array ************


//*******program to send the encrypted file as an attachment ********
//accepts string as file name want to sore the above byte array itself 
   DataSource source = new FileDataSource(filename_dest);
    attachPart.setDataHandler(new DataHandler(source));

除非Java邮件库(半自动)这样做(例如apache.commons.mail),否则您必须将附件编码为Base64负载,并在通过电子邮件发送负载之前添加适当的mime类型头

您可以引用作为示例,也可以添加以下内容

 final String payload = Base64.Encoder.encodeToString(result);
 attachPart.setText(payload);
 attachPart.setHeader("Content-Type", "application/pdf"); // Use x-pdf instead for backward compatibility with old / legacy software
 attachPart.setHeader("Content-Transfer-Encoding", "base64");

查看课程。

谢谢,请您对我的上述代码进行必要的更改,以帮助我掌握更多信息。我已按照以下内容编辑了您的文章example@medveshonok117请不要编辑问题以包含答案。用你的答案。