# Package com.sun.mail.util

Utility classes for use with the JavaMail API. These utility classes are not part of the JavaMail specification. While this package contains many classes used by the JavaMail implementation and not intended for direct use by applications, the classes documented here may be of use to applications.

Classes in this package log debugging information using `java.util.logging` as described in the following table:

Logger Name | Logging Level | Purpose
--- | --- | ---
com.sun.mail.util.socket | FINER | Debugging output related to creating sockets

WARNING: The APIs in this package should be considered EXPERIMENTAL. They may be changed in the future in ways that are incompatible with applications using the current APIs.

Interface Summary
ReadableMime: A Message or message Part whose data can be read as a MIME format stream.

Class Summary
ASCIIUtility
BASE64DecoderStream: This class implements a BASE64 Decoder.
BASE64EncoderStream: This class implements a BASE64 encoder.
BEncoderStream: This class implements a 'B' Encoder as defined by RFC2047 for encoding MIME headers.
CRLFOutputStream: Convert lines into the canonical format, that is, terminate lines with the CRLF sequence.
LineInputStream: This class is to support reading CRLF terminated lines that contain only US-ASCII characters from an input stream.
LineOutputStream: This class is to support writing out Strings as a sequence of bytes terminated by a CRLF sequence.
LogOutputStream: Capture output lines and send them to the mail logger.
MailLogger: A simplified logger used by JavaMail to handle logging to a PrintStream and logging through a java.util.logging.Logger.
MailSSLSocketFactory: An SSL socket factory that makes it easier to specify trust.
MimeUtil: General MIME-related utility methods.
PropUtil: Utilities to make it easier to get property values.
QDecoderStream: This class implements a Q Decoder as defined in RFC 2047 for decoding MIME headers.
QEncoderStream: This class implements a Q Encoder as defined by RFC 2047 for encoding MIME headers.
QPDecoderStream: This class implements a QP Decoder.
QPEncoderStream: This class implements a Quoted Printable Encoder.
SharedByteArrayOutputStream: A ByteArrayOutputStream that allows us to share the byte array rather than copy it.
SocketFetcher: This class is used to get Sockets.
TraceInputStream: This class is a FilterInputStream that writes the bytes being read from the given input stream into the given output stream.
TraceOutputStream: This class is a subclass of DataOutputStream that copies the data being written into the DataOutputStream into another output stream.
UUDecoderStream: This class implements a UUDecoder.
UUEncoderStream: This class implements a UUEncoder.
WriteTimeoutSocket: A special Socket that uses a ScheduledExecutorService to implement timeouts for writes.

Exception Summary
ASCIIUtility
BASE64DecoderStream: This class implements a BASE64 Decoder.
BASE64EncoderStream: This class implements a BASE64 encoder.
BEncoderStream: This class implements a 'B' Encoder as defined by RFC2047 for encoding MIME headers.
CRLFOutputStream: Convert lines into the canonical format, that is, terminate lines with the CRLF sequence.
DecodingException: A special IOException that indicates a failure to decode data due to an error in the formatting of the data.
FolderClosedIOException: A variant of FolderClosedException that can be thrown from methods that only throw IOException.
LineInputStream: This class is to support reading CRLF terminated lines that contain only US-ASCII characters from an input stream.
LineOutputStream: This class is to support writing out Strings as a sequence of bytes terminated by a CRLF sequence.
LogOutputStream: Capture output lines and send them to the mail logger.
MailConnectException: A MessagingException that indicates a socket connection attempt failed.
MailLogger: A simplified logger used by JavaMail to handle logging to a PrintStream and logging through a java.util.logging.Logger.
MailSSLSocketFactory: An SSL socket factory that makes it easier to specify trust.
MessageRemovedIOException: A variant of MessageRemovedException that can be thrown from methods that only throw IOException.
MimeUtil: General MIME-related utility methods.
PropUtil: Utilities to make it easier to get property values.
QDecoderStream: This class implements a Q Decoder as defined in RFC 2047 for decoding MIME headers.
QEncoderStream: This class implements a Q Encoder as defined by RFC 2047 for encoding MIME headers.
QPDecoderStream: This class implements a QP Decoder.
QPEncoderStream: This class implements a Quoted Printable Encoder.
ReadableMime: A Message or message Part whose data can be read as a MIME format stream.
SharedByteArrayOutputStream: A ByteArrayOutputStream that allows us to share the byte array rather than copy it.
SocketConnectException: An IOException that indicates a socket connection attempt failed.
SocketFetcher: This class is used to get Sockets.
TimeoutOutputStream: An OutputStream that wraps the Socket's OutputStream and uses the ScheduledExecutorService to schedule a task to close the socket (aborting the write) if the timeout expires.
TraceInputStream: This class is a FilterInputStream that writes the bytes being read from the given input stream into the given output stream.
TraceOutputStream: This class is a subclass of DataOutputStream that copies the data being written into the DataOutputStream into another output stream.
UUDecoderStream: This class implements a UUDecoder.
UUEncoderStream: This class implements a UUEncoder.
WriteTimeoutSocket: A special Socket that uses a ScheduledExecutorService to implement timeouts for writes.