Пересылать сообщения объекта MimeMessage в обычном формате пересылки ВМЕСТО вложения в файле EML

#java #jakarta-mail #eml #email-forwarding

#java #джакарта-почта #eml #пересылка электронной почты

Вопрос:

По сути, я пытаюсь структурировать пересылку электронной почты, а затем преобразовать ее в EML-файл.Но исходный объект сообщения msg отображается как вложение вместо обычного сообщения в EML файле. Я пробовал setContent и getDataHandler способы добавить его в составное электронное письмо, но безуспешно. Я действительно признателен, если кто-нибудь может мне помочь в этом.

P.S msg фактическое содержимое объекта находится в text/html формате, а не в text/plain .

Спасибо.

        MimeMessage forward = new MimeMessage(mailSession);

          // Fill in header
          forward.setSubject("Fwd: "   msg.getSubject());
          forward.setFrom(new InternetAddress(from));
          forward.addRecipient(Message.RecipientType.TO,new InternetAddress("toemail@ibm.com")); 
          forward.addRecipient(Message.RecipientType.CC,new InternetAddress("ccemail@gmail.com"));  


          // Create your new message part
            MimeBodyPart messageBodyPart = new MimeBodyPart();
            messageBodyPart.setContent(
                      "<html><body><h1>This is actual message embedded in HTML tags</h1></body></html>",
                     "text/html");

          // Create a multi-part to combine the parts
            MimeMultipart multipart = new MimeMultipart();
          multipart.addBodyPart(messageBodyPart);

          // Create and fill part for the forwarded content
          messageBodyPart = new MimeBodyPart();
          messageBodyPart.setDataHandler(msg.getDataHandler());
          //messageBodyPart.setContent(msg, "message/rfc822");

          // Add part to multi part
          multipart.addBodyPart(messageBodyPart);

          // Associate multi-part with message
          forward.setContent(multipart);



          // Send message
          Transport.send((Message)forward);
          System.out.println("message forwarded ....");
 

Ответ №1:

Когда вы добавляете messageBodyPart set Part::setDisposition в INLINE.

  ...
 messageBodyPart = new MimeBodyPart();
 messageBodyPart.setDataHandler(msg.getDataHandler());
 messageBodyPart.setDisposition(Part.INLINE); //<-- Not an attachment.
 //messageBodyPart.setContent(msg, "message/rfc822");
 ...