【问题标题】:Body message does not appear when sending attachments发送附件时不显示正文消息
【发布时间】:2016-07-25 12:55:27
【问题描述】:

当我发送附件时,我在电子邮件中看不到正文消息 (message.setText(this.getEmailBody());)。 如果没有附件,电子邮件将与正文一起显示。电子邮件将发送到 gmail 帐户。任何线索为什么会发生这种情况?

        MimeMessage message = new MimeMessage(session_m);    
        message.setFrom(new InternetAddress(this.getEmailSender()));
        message.addRecipient(Message.RecipientType.TO, new InternetAddress(this.getEmailRecipient()));
        message.setSubject(this.getEmailSubject());
        message.setText(this.getEmailBody()); //This won't be displayed if set attachments

        Multipart multipart = new MimeMultipart();

        for(String file: getAttachmentNameList()){
            MimeBodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.attachFile(this.attachmentsDir.concat(file.trim()));
            multipart.addBodyPart(messageBodyPart);

            message.setContent(multipart);
        }


        Transport.send(message);
        System.out.println("Email has been sent");

【问题讨论】:

    标签: java jakarta-mail


    【解决方案1】:

    您需要使用以下内容:

             // Create the message part
            BodyPart messageBodyPart = new MimeBodyPart();
            // Fill the message
            messageBodyPart.setText(body);
            messageBodyPart.setContent(body, "text/html");
    
            Multipart multipart = new MimeMultipart();
            multipart.addBodyPart(messageBodyPart);
             //Add the bodypart for the attachment(s)
            // Send the complete message parts
            message.setContent(multipart); //message is of type - MimeMessage
    

    【讨论】:

    • 整个方法。这个对我有用。检查我是否错过了 sn-p 中的某些内容。这是整个method
    • 你是对的。它也对我有用。我认为问题出在这两行: MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.attachFile(this.attachmentsDir.concat(file.trim()));所以我不得不按照你的方式去做。感谢您的帮助;)
    【解决方案2】:

    你需要分成两部分来做到这一点:

            Multipart multipart = new MimeMultipart();
    
            // content part
            BodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setText(content);
            messageBodyPart.setContent(content, "text/html");
            multipart.addBodyPart(messageBodyPart);
    
            BodyPart attachmentPart = new MimeBodyPart();
            DataSource source = new FileDataSource(file);
            attachmentPart.setDataHandler(new DataHandler(source));
            attachmentPart.setFileName(file.getName());
            multipart.addBodyPart(attachmentPart);
    

    【讨论】:

    • 非常感谢,这是唯一对我有用的解决方案。 +1
    猜你喜欢
    • 2015-10-16
    • 2021-10-17
    • 2021-06-24
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多