Module jakarta.mail

Class 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 
      Modifier and Type Field Description
      protected byte[] buffer  
      protected int bufsize  
      protected java.io.Writer out  
      protected boolean started  
    • Constructor Summary

      Constructors 
      Constructor Description
      BASE64MailboxEncoder​(java.io.Writer what)
      Create a BASE64 encoder
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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