Java 邮件附件未在 Outlook 中显示

标签 java pdf outlook jakarta-mail attachment

我们使用 Java Mail 通过 SMTP 通过 Lotus Notes 向客户发送带有 PDF 附件的电子邮件。 前段时间我们收到通知,一些客户没有收到附件。

其中一位客户使用 Microsoft Outlook,并在他的收件箱中收到了附件标志。但当他打开 电子邮件,他没有看到附件。我们无法检查电子邮件客户端的版本 并进行客户端测试,因为我们的客户遍布全局。

如果我们的客户回复或(内部)转发电子邮件,附件将显示在收件人的电子邮件客户端中。

以下部分是受影响的Java源代码:

private static Multipart createMultipartMailWithAttachment(String messageText)
        throws MessagingException {
    // Message with attachments
    Multipart mp = new MimeMultipart();

    // Attach Text
    MimeBodyPart mbp1 = new MimeBodyPart();
    mbp1.setText(messageText, UTF8, HTML);
    mp.addBodyPart(mbp1);

    for (File f : attachments) {
        MimeBodyPart fileAttachment = new MimeBodyPart();
        try {
            fileAttachment.setDisposition(MimeBodyPart.ATTACHMENT);
            fileAttachment.attachFile(f);
            if(f.getName().toLowerCase().endsWith(PDF_EXTENSION)) {
                fileAttachment.setHeader(CONTENT_TYPE, APPLICATION_PDF);
            }
        } catch (IOException e) {
            returnMessage = e.getMessage();
        }
        mp.addBodyPart(fileAttachment);
    }
    return mp;
}

我们已经测试了不同的网络邮件服务,例如 gmail.com、yahoo.com 和 Outlook.com。在每种情况下 显示了附件。也可在 Mozilla Thunderbird、Microsoft Outlook 或 Lotus Notes 的本地安装中 是显示的附件吗?

经过多次询问,我们得到了许多不同的解决方案流程。请参阅 setDisposition(MimeBodyPart.ATTACHMENT) 和 setHeader(CONTENT_TYPE, APPLICATION_PDF)。这些解决方案都没有使我们取得成功。有人知道吗 解决该问题的解决方案或新的解决方案流程?

最佳答案

我们遇到了类似的问题,我们将文件附件从 J2EE 应用程序发送到各个邮件帐户。我们使用端口 465 和 HTTPS 连接类型的 SMTP gmail 服务器 (smtp.gmail.com) 来发送邮件。

通过 Java 发送的消息的附件未在 Outlook 中显示,但我们可以在 Gmail 帐户的 Web 界面中观察到它们。

在我们的例子中,事实证明 MimeMultipart 构造不正确。我们有

Multipart multipart = new MimeMultipart("alternative");

当我们将其修改为

Multipart multipart = new MimeMultipart();

附件变得可见。

另请参阅the following resource以获得完整的解释。

关于Java 邮件附件未在 Outlook 中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405511/

相关文章:

java - 如何以毫秒精度同步 2 个系统之间的时间?

java - PDF 页面的原点 (x,y) 在哪里?

image - Azure 上的 Syncfusion PdfViewerControl

java - 不共享任何外键关系的 JPA 实体之间的 @OneToOne 关系

java - Resteasy 可选路径元素

java - jaxb2-maven-plugin 使用 xmlns 前缀生成 package-info.java

forms - 使用 pdftk 填充 pdf 表单后保持可编辑状态

java - 如何从收到的电子邮件中提取信息以自动执行 list ?

vba - 在Outlook 2013中使用VBA将电子邮件添加密件抄送

css - 如何在 Outlook 电子邮件中显示嵌入的 Base64 编码图像