当前位置: 首页 > 面试题库 >

以流的形式发送PDF附件中的电子邮件

华峰
2023-03-14
问题内容

我想将Pdf作为电子邮件附件发送(我正在使用JavaMail API)。我将Pdf(由jasper生成)作为byte[]

public InputStream exportPdfToInputStream(User user) throws ParseErrorException, MethodInvocationException, ResourceNotFoundException, JRException, IOException{
        JasperPrint jasperPrint = createJasperPrintObject(user);
        byte[] pdfByteArray = JasperExportManager.exportReportToPdf(jasperPrint);
        return new ByteArrayInputStream(pdfByteArray);
    }

这是我用来构造的代码,MimeBodyPart将其作为附件:

    if (arrayInputStream != null && arrayInputStream instanceof ByteArrayInputStream) {
        MimeBodyPart attachment = new MimeBodyPart(arrayInputStream);
        attachment.setHeader("Content-Type", "application/pdf");
        mimeMultipart.addBodyPart(attachment);
    }

这段代码给我这个错误:

javax.mail.MessagingException: IOException while sending message;
  nested exception is:
    java.io.IOException: Error in encoded stream: needed at least 2 valid base64 characters, but only got 1 before padding character (=), the 10 most recent characters were: "\24\163\193\n\185\194\216#\208="

问题答案:

您使用的构造函数用于 解析 传输中的mime部分。

您的第二个示例应该正确。您可以考虑

  • 不要转换为InputStream并返回,这将产生不必要的副本
  • 添加处置(例如 bp.setDisposition(Part.ATTACHMENT);


 类似资料:
  • 尝试发送带有pdf附件的电子邮件,尝试使用swickmailer,但没有成功,此代码使用zip但不使用PDF:( 邮件被发送罚款,我得到的邮件:但附件是不存在的,在meial有所有的bas64编码在电子邮件像: onatatent-Type: Application/octet-stream; name="media.pdf"Content-transver-Encode: base 64 Con

  • 我需要在我的应用程序中集成邮件服务。我的应用程序应该发送电子邮件,其中必须附上。pdf文件(详细报告)。PDF文件现在位于远程服务器上。 有人能帮我理解如何在黑莓手机上发送带有pdf附件的邮件吗?如果实施是可行的,那么我将如何实施? 以下是我从Blackberry知识库论坛获得的用Blackberry发送邮件的链接 如何-创建附件 如何创建和发送消息

  • 问题内容: 我正在使用sendgrid发送电子邮件,并且使用以下代码可以正常工作,但没有附件。 但是我需要发送附件,因此我搜索了github源和Web文档API,由于某种原因,没有javadocs,但是有一个示例GitHub sendgrid, 所以我一直在尝试直到它起作用为止,我缩小了一些异常和响应代码,起初我是被禁止的未经授权,最好是响应202,表示有效且已排队(在此处检查),这是我的代码发送

  • 我目前正试图发送一封电子邮件,并附上一份pdf格式的表格作为附件。 我正在使用FPDM库填充我的pdf:https://github.com/codeshell/fpdm 这是我的代码: 然后我试着发送一封邮件,里面有这个填好的pdf作为附件。以下是我的邮寄方式: 这种“电子邮件发送”功能在普通PDF中运行良好,但在我的PDF中,所有文本和字段都会消失。我想知道是有办法还是不可能? 此外,我正在使

  • 我已经编写了一个代码通过java mail API发送,所有的工作都很好,但是我发送的纯文本以可下载附件的形式被收件人接收,而不是纯文本消息。 我不知道为什么会这样。下面给出的是我运行时的代码及其输出。 我使用过Java Mail API、NetBeans IDE、Glassfish服务器、Enterprise Java Bean。 结果如下: 邮件收件人-看,简单的短信是附件的形式。

  • 问题内容: 我想编辑以下代码并发送带有附件的电子邮件。附件是一个pdf文件,在Linux环境中位于/home/myuser/sample.pdf下。我应该在下面更改什么? 问题答案: 在这种情况下,您使用电子邮件包创建了一条消息- 然后发送消息。 这里有几个示例-http: //docs.python.org/library/email- examples.html 更新 由于上述原因,更新链接会