Package jakarta.mail

Class Multipart

java.lang.Object
jakarta.mail.Multipart
Direct Known Subclasses:
MimeMultipart

public abstract class Multipart extends Object
Multipart is a container that holds multiple body parts. Multipart provides methods to retrieve and set its subparts.

Multipart also acts as the base class for the content object returned by most Multipart DataContentHandlers. For example, invoking getContent() on a DataHandler whose source is a "multipart/signed" data source may return an appropriate subclass of Multipart.

Some messaging systems provide different subtypes of Multiparts. For example, MIME specifies a set of subtypes that include "alternative", "mixed", "related", "parallel", "signed", etc.

Multipart is an abstract class. Subclasses provide actual implementations.

Author:
John Mani
  • Field Details

    • parts

      protected Vector<BodyPart> parts
      Vector of BodyPart objects.
    • contentType

      protected String contentType
      This field specifies the content-type of this multipart object. It defaults to "multipart/mixed".
    • parent

      protected Part parent
      The Part containing this Multipart, if known.
      Since:
      JavaMail 1.1
    • streamProvider

      protected final StreamProvider streamProvider
      Instance of stream provider.
      Since:
      JavaMail 2.1
  • Constructor Details

    • Multipart

      protected Multipart()
      Default constructor. An empty Multipart object is created.
  • Method Details

    • setMultipartDataSource

      protected void setMultipartDataSource(MultipartDataSource mp) throws MessagingException
      Setup this Multipart object from the given MultipartDataSource.

      The method adds the MultipartDataSource's BodyPart objects into this Multipart. This Multipart's contentType is set to that of the MultipartDataSource.

      This method is typically used in those cases where one has a multipart data source that has already been pre-parsed into the individual body parts (for example, an IMAP datasource), but needs to create an appropriate Multipart subclass that represents a specific multipart subtype.

      Parameters:
      mp - Multipart datasource
      Throws:
      MessagingException - for failures
    • getContentType

      public String getContentType()
      Return the content-type of this Multipart.

      This implementation just returns the value of the contentType field.

      Returns:
      content-type
      See Also:
    • getCount

      public int getCount() throws MessagingException
      Return the number of enclosed BodyPart objects.
      Returns:
      number of parts
      Throws:
      MessagingException - for failures
      See Also:
    • getBodyPart

      public BodyPart getBodyPart(int index) throws MessagingException
      Get the specified Part. Parts are numbered starting at 0.
      Parameters:
      index - the index of the desired Part
      Returns:
      the Part
      Throws:
      IndexOutOfBoundsException - if the given index is out of range.
      MessagingException - for other failures
    • removeBodyPart

      public boolean removeBodyPart(BodyPart part) throws MessagingException
      Remove the specified part from the multipart message. Shifts all the parts after the removed part down one.
      Parameters:
      part - The part to remove
      Returns:
      true if part removed, false otherwise
      Throws:
      MessagingException - if no such Part exists
      IllegalWriteException - if the underlying implementation does not support modification of existing values
    • removeBodyPart

      public void removeBodyPart(int index) throws MessagingException
      Remove the part at specified location (starting from 0). Shifts all the parts after the removed part down one.
      Parameters:
      index - Index of the part to remove
      Throws:
      IndexOutOfBoundsException - if the given index is out of range.
      IllegalWriteException - if the underlying implementation does not support modification of existing values
      MessagingException - for other failures
    • addBodyPart

      public void addBodyPart(BodyPart part) throws MessagingException
      Adds a Part to the multipart. The BodyPart is appended to the list of existing Parts.
      Parameters:
      part - The Part to be appended
      Throws:
      IllegalWriteException - if the underlying implementation does not support modification of existing values
      MessagingException - for other failures
    • addBodyPart

      public void addBodyPart(BodyPart part, int index) throws MessagingException
      Adds a BodyPart at position index. If index is not the last one in the list, the subsequent parts are shifted up. If index is larger than the number of parts present, the BodyPart is appended to the end.
      Parameters:
      part - The BodyPart to be inserted
      index - Location where to insert the part
      Throws:
      IllegalWriteException - if the underlying implementation does not support modification of existing values
      MessagingException - for other failures
    • writeTo

      public abstract void writeTo(OutputStream os) throws IOException, MessagingException
      Output an appropriately encoded bytestream to the given OutputStream. The implementation subclass decides the appropriate encoding algorithm to be used. The bytestream is typically used for sending.
      Parameters:
      os - the stream to write to
      Throws:
      IOException - if an IO related exception occurs
      MessagingException - for other failures
    • getParent

      public Part getParent()
      Return the Part that contains this Multipart object, or null if not known.
      Returns:
      the parent Part
      Since:
      JavaMail 1.1
    • setParent

      public void setParent(Part parent)
      Set the parent of this Multipart to be the specified Part. Normally called by the Message or BodyPart setContent(Multipart) method. parent may be null if the Multipart is being removed from its containing Part.
      Parameters:
      parent - the parent Part
      Since:
      JavaMail 1.1