Package com.sun.mail.imap.protocol

## Class BASE64MailboxEncoder

- java.lang.Object
- - com.sun.mail.imap.protocol.BASE64MailboxEncoder

    public class BASE64MailboxEncoder
    extends java.lang.Object

From RFC2060:

>      5.1.3.  Mailbox International Naming Convention

>        By convention, international mailbox names are specified using a
>        modified version of the UTF-7 encoding described in [UTF-7].  The
>        purpose of these modifications is to correct the following problems
>        with UTF-7:

>           1) UTF-7 uses the "+" character for shifting; this conflicts with
>              the common use of "+" in mailbox names, in particular USENET
>              newsgroup names.

>           2) UTF-7's encoding is BASE64 which uses the "/" character; this
>              conflicts with the use of "/" as a popular hierarchy delimiter.

>           3) UTF-7 prohibits the unencoded usage of "\"; this conflicts with
>              the use of "\" as a popular hierarchy delimiter.

>           4) UTF-7 prohibits the unencoded usage of "~"; this conflicts with
>              the use of "~" in some servers as a home directory indicator.

>           5) UTF-7 permits multiple alternate forms to represent the same
>              string; in particular, printable US-ASCII chararacters can be
>              represented in encoded form.

>        In modified UTF-7, printable US-ASCII characters except for "&"
>        represent themselves; that is, characters with octet values 0x20-0x25
>        and 0x27-0x7e.  The character "&" (0x26) is represented by the two-
>        octet sequence "&-".

>        All other characters (octet values 0x00-0x1f, 0x7f-0xff, and all
>        Unicode 16-bit octets) are represented in modified BASE64, with a
>        further modification from [UTF-7] that "," is used instead of "/".
>        Modified BASE64 MUST NOT be used to represent any printing US-ASCII
>        character which can represent itself.

>        "&" is used to shift to modified BASE64 and "-" to shift back to US-
>        ASCII.  All names start in US-ASCII, and MUST end in US-ASCII (that
>        is, a name that ends with a Unicode 16-bit octet MUST end with a "-
>        ").

>        For example, here is a mailbox name which mixes English, Japanese,
>        and Chinese text: ~peter/mail/&ZeVnLIqe-/&U,BTFw-

This class will do the correct Encoding for the IMAP mailboxes.

Author:
  Christopher Cotton

### Field Summary

Fields
`protected byte[]` `buffer`
`protected int` `bufsize`
`protected java.io.Writer` `out`
`protected boolean` `started`

### Constructor Summary

Constructors
`BASE64MailboxEncoder​(java.io.Writer what)` Create a BASE64 encoder

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`protected void` `encode()`
`static java.lang.String` `encode​(java.lang.String original)`
`void` `flush()`
`void` `write​(int c)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### buffer

    protected byte[] buffer

#### bufsize

    protected int bufsize

#### started

    protected boolean started

#### out

    protected java.io.Writer out

### Constructor Detail

#### BASE64MailboxEncoder

    public BASE64MailboxEncoder​(java.io.Writer what)

Create a BASE64 encoder

Parameters:
  `what` - where to write the encoded name

### Method Detail

#### encode

    public static java.lang.String encode​(java.lang.String original)

#### write

    public void write​(int c)

#### flush

    public void flush()

#### encode

    protected void encode()
                   throws java.io.IOException

Throws:
  `java.io.IOException`