当前位置: 首页 > 知识库问答 >
问题:

JavaMail附件和正文问题

柯曜文
2023-03-14

我使用下面的代码将pdf文件附加到邮件(JAVAMAIL)中。这个位置工作完美,并添加附件到我的邮件,但这邮件没有任何正文。

        Multipart multipart = new MimeMultipart();
        msg.setContent(multipart);
        DataSource source = new FileDataSource(pdf);
        MimeBodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setDataHandler(new DataHandler(source));
        messageBodyPart.setFileName(pdf.getName().toString());
        multipart.addBodyPart(messageBodyPart);
        msg.setContent(multipart);

当我将下面的行添加到我的代码中时,它会删除附件并发送给我只包含文本的邮件。

msg.setText(body);

请帮助我添加附件和测试体到我的邮件。

共有1个答案

白成济
2023-03-14

问题是,如果您想发送带有附件的消息,那么您需要为您的消息和附件提供一部分。

通过在消息中调用settext,您将丢弃前面设置的多部分。

您的消息需要有一个如下所示的层次结构(如果您希望有一个纯文本和html消息,则需要更多的嵌套):

MimeMessage
+- MimeMultiPart
   +- MimeBodyPart (message)
   +- MimeBodyPart (attachment)

例如:

MimeMessage message = new MimeMessage(session);
MimeMultiPart multiPart = new MimeMultiPart();

MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(body);
multiPart.addBodyPart(messageBodyPart);

MimeBodyPart attachment = new MimeBodyPart();
attachment.setDataHandler(new DataHandler(source));
attachment.setDisposition(Part.ATTACHMENT);
attachment.setFileName(pdf.getName().toString());
multipart.addBodyPart(attachment);

message.setContent(multiPart);
 类似资料:
  • 使用JavaMail1.6.2,我们有这样的体验: 我认为这是好的,但是接收方在-格式上有问题,这导致我们使用。 使用JavaMail 1.6.2和,我们有这样的体验: 这个代码很简单。下面是一个MCVE,它应该演示这个问题:

  • 我正在尝试使用JavaMail API从Microsoft Exchange 2007接收电子邮件。如果电子邮件不包含任何附件,则所有电子邮件均已正确接收。但是,如果电子邮件包含附件,则会正确接收邮件正文,但附件会作为内容类型html发送,例如,如果附件被称为blabla。pdf,它是作为blabla发送的。pdf。html,更有趣的是,该文件既不包含html代码,也不包含原始文件的数据。 有人知

  • 如何从内容类型为“多部分/备选”的邮件中下载附件;

  • 我试图通过javamail和imap从我的电子邮件下载所有新的电子邮件附件。这一切都很好,但有些附件在PDF中被解码为BASE64,这是我的声明 如何获取此附件并将其下载到硬盘? 到目前为止已经尝试过了,第一个IF语句使用Base64解码捕获附件。 如果有一种简单易行的方法可以将附件下载到我的磁盘,也可以使用NodeJS。尝试过node-imap,但我在那里遇到了同样的错误。

  • 最近我在通过oracle-javamail从我的电子邮件下载CSV时遇到了一个问题。我发现第一个工作正常(来自大型机服务器),但是第二个csv附件似乎是“应用程序/vnd.ms-excel”,当它显然是一个. csv文件时,就像另一个下载完全正常的文件一样。 我在这两个问题上使用了相同的代码,但找不到有关此问题的任何信息。 如果我把那封电子邮件发给自己,我可以神奇地下载附件而没有任何问题。任何帮助

  • 问题内容: 我使用Java Mail下载阿拉伯文附件文件时遇到问题。 文件名始终是不明确的。 问题是检索附件为非UTF-8字符。 问题答案: 标头是根据RFC 2047中描述的机制(即)编码的,该机制表示与 < encoding> < encoded-bytes>_匹配的标头的部分是字节编码的部分。所述 < 编码>说如何解释的字节数,和(因为它是风格,而不是样式)的 < 编码字节>_是基64编码。