Package javax.mail

Class Message

  • All Implemented Interfaces:
    Part
    Direct Known Subclasses:
    MimeMessage

    public abstract class Message
    extends java.lang.Object
    implements Part
    An abstract mail message, consisting of headers and content.

    A message is retrieved from a folder, and is normally a lightweight object that retrieves its properties on demand. Fetch profiles may be used to prefetch certain properties of a message.

    To send a message, an appropriate subclsass is instantiated, its properties set, and it is then delivered via a transport using the Transport.sendMessage method.

    Version:
    1.4
    Author:
    Chris Burdess
    See Also:
    Part
    • Field Detail

      • msgnum

        protected int msgnum
        The number of this message within its folder, starting from 1, or 0 if the message was not retrieved from a folder.
      • expunged

        protected boolean expunged
        True if this message has been expunged.
      • folder

        protected Folder folder
        The containing folder.
      • session

        protected Session session
        The session in scope for this message.
    • Constructor Detail

      • Message

        protected Message()
        Constructor with no folder or session.
      • Message

        protected Message​(Folder folder,
                          int msgnum)
        Constructor with a folder and a message number. Used by folder implementations.
        Parameters:
        folder - the containing folder
        msgnum - the sequence number within the folder
      • Message

        protected Message​(Session session)
        Constructor with a session. Used to create messages for sending.
        Parameters:
        session - the session in scope
    • Method Detail

      • getFrom

        public abstract Address[] getFrom()
                                   throws MessagingException
        Returns the identity of the person(s) who ordered the sending of this message.

        In certain implementations, this may be different from the entity that actually sent the message.

        Throws:
        MessagingException
      • setFrom

        public abstract void setFrom()
                              throws MessagingException
        Sets the identity of the person sending this message, as obtained from the property "mail.user". If this property is absent, the system property "user.name" is used.
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder
        MessagingException
      • setFrom

        public abstract void setFrom​(Address address)
                              throws MessagingException
        Sets the identity of the person sending this message.
        Parameters:
        address - the sender
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • addFrom

        public abstract void addFrom​(Address[] addresses)
                              throws MessagingException
        Adds addresses to the identity of the person sending this message.
        Parameters:
        addresses - the senders
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • setRecipients

        public abstract void setRecipients​(Message.RecipientType type,
                                           Address[] addresses)
                                    throws MessagingException
        Sets the recipient addresses of the specified type.
        Parameters:
        type - the recipient type
        addresses - the addresses
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • addRecipients

        public abstract void addRecipients​(Message.RecipientType type,
                                           Address[] addresses)
                                    throws MessagingException
        Adds the recipient addresses of the given type.
        Parameters:
        type - the recipient type
        addresses - the addresses
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • setSubject

        public abstract void setSubject​(java.lang.String subject)
                                 throws MessagingException
        Sets the subject of this message.
        Parameters:
        subject - the subject
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • setSentDate

        public abstract void setSentDate​(java.util.Date date)
                                  throws MessagingException
        Sets the date this message was sent.
        Parameters:
        date - the sent date of this message
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • getFlags

        public abstract Flags getFlags()
                                throws MessagingException
        Returns the flags for this message.

        Modifying any of these flags does not affect the message flags. Use the setFlags method to change the message's flags.

        Throws:
        MessagingException
      • setFlags

        public abstract void setFlags​(Flags flag,
                                      boolean set)
                               throws MessagingException
        Sets the specified flags on this message to the given value. Any flags in this message that are not specified in the given flags are unaffected.
        Parameters:
        flag - the flags to be set
        set - the value to be set
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • setFlag

        public void setFlag​(Flags.Flag flag,
                            boolean set)
                     throws MessagingException
        Sets the specified flag on this message to the given value.
        Parameters:
        flag - the flag to be set
        set - the value to be set
        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException
      • getMessageNumber

        public int getMessageNumber()
        Returns the message number for this message within its folder.
        See Also:
        msgnum
      • setMessageNumber

        protected void setMessageNumber​(int msgnum)
        Sets the message number for this message.
        See Also:
        msgnum
      • getFolder

        public Folder getFolder()
        Returns the folder from which this message was obtained.
      • isExpunged

        public boolean isExpunged()
        Indicates whether this message is expunged.
        See Also:
        Folder.expunge()
      • setExpunged

        protected void setExpunged​(boolean expunged)
        Sets the expunged flag for this message.
      • reply

        public abstract Message reply​(boolean replyToAll)
                               throws MessagingException
        Returns a new message suitable for a reply to this message. The new message will have its recipients set appropriately, but will have no content.

        The subject field is filled in with the original subject prefixed with "Re:" (unless it already starts with "Re:").

        Parameters:
        replyToAll - if the reply should be sent to all recipients of this message
        Throws:
        MessagingException
      • saveChanges

        public abstract void saveChanges()
                                  throws MessagingException
        Save any changes made to this message into its underlying store, if the message was obtained from a folder. The message may be saved immediately or when its containing folder is closed.

        This method ensures that any header fields are consistent with the changed message contents.

        Throws:
        IllegalWriteException - if the underlying implementation does not support modification of existing values
        java.lang.IllegalStateException - if this message is obtained from a READ_ONLY folder.
        MessagingException