PowerTCP Mail for .NET
ImapUTF7Encoding Class
Members  Example  See Also  Send comments on this topic.
Dart.PowerTCP.Mail Namespace : ImapUTF7Encoding Class




Represents a modified UTF-7 encoding of Unicode characters to be used for IMAP mailbox names.

Object Model

ImapUTF7Encoding Class

Syntax

Visual Basic (Declaration) 
Public Class ImapUTF7Encoding 
   Inherits System.Text.Encoding
Visual Basic (Usage)Copy Code
Dim instance As ImapUTF7Encoding
C# 
public class ImapUTF7Encoding : System.Text.Encoding 
Managed Extensions for C++ 
public __gc class ImapUTF7Encoding : public System.Text.Encoding 
C++/CLI 
public ref class ImapUTF7Encoding : public System.Text.Encoding 

Example

The following example demonstrates encoding/decoding data using the ImapUTF7Encoding class.
Visual BasicCopy Code
Private Sub ImapUTF7Test()

   ' Create Unicode character array
   ' ChrW(35)  = #
   ' ChrW(37)  = %
   ' ChrW(928) = Pi
   ' ChrW(931) = Sigma
   Dim chars() As Char = {ChrW(35), ChrW(37), ChrW(928), ChrW(931)}

   ' Initialize ImapUTF7 encoder
   Dim ImapUTF7 As New ImapUTF7Encoding()

   ' Determine how big target byte array needs to be 
   Dim Count As Integer = ImapUTF7.GetByteCount(chars, 0, chars.Length)
   ' You could also use the following to get the maximum size
   ' Dim Count As Integer = ImapUTF7.GetMaxByteCount(chars.Length)
   Debug.WriteLine(Count & " bytes needed to encode characters.")

   ' Initialize target byte array
   Dim Bytes(Count - 1) As Byte

   ' Encode data
   Count = ImapUTF7.GetBytes(chars, 0, chars.Length, bytes, 0)
   Debug.WriteLine(Count & " bytes encoded.")

   ' Show encoded bytes
   Dim B As Byte
   For Each B In Bytes
      Debug.WriteLine(B)
   Next

   ' Now to decode...first determine how big target char array needs to be
   Count = ImapUTF7.GetCharCount(Bytes, 0, Bytes.Length)
   ' You could also use the following to get the maximum size
   ' Count = ImapUTF7.GetMaxCharCount(Bytes.Length)
   Debug.WriteLine(Count & " characters needed to decode bytes.")

   ' Initialize target char array
   ReDim chars(Count - 1)

   ' Decode data
   Count = ImapUTF7.GetChars(Bytes, 0, Bytes.Length, chars, 0)
   Debug.WriteLine(Count & " bytes decoded.")

   ' Show decoded characters
   Dim C As Char
   For Each C In chars
      Debug.WriteLine(C)
   Next
End Sub
C#Copy Code
private void ImapUTF7Test()
{
   // Create Unicode character array
   char[] chars = {
      '\u0023', // #
      '\u0025', // %
      '\u03a0', // Pi
      '\u03a3'  // Sigma
   };

   // Initialize ImapUTF7 encoder
   ImapUTF7Encoding ImapUTF7 = new ImapUTF7Encoding();

   // Determine how big target byte array needs to be 
   int count = ImapUTF7.GetByteCount(chars, 0, chars.Length);
   // You could also use the following to get the maximum size
   // int count = ImapUTF7.GetMaxByteCount(chars.Length);
   Debug.WriteLine(count + " bytes needed to encode characters.");

   // Initialize target byte array
   byte[] bytes = new byte[count];

   // Encode data
   count = ImapUTF7.GetBytes(chars, 0, chars.Length, bytes, 0);
   Debug.WriteLine(count + " bytes encoded.");

   // Show encoded bytes
   foreach(byte b in bytes)
      Debug.WriteLine(b);

   // Now to decode...first determine how big target char array needs to be
   count = ImapUTF7.GetCharCount(bytes, 0, bytes.Length);
   // You could also use the following to get the maximum size
   // count = ImapUTF7.GetMaxCharCount(bytes.Length);
   Debug.WriteLine(count + " characters needed to decode bytes.");

   // Initialize target char array
   chars = new char[count];

   // Decode data
   count = ImapUTF7.GetChars(bytes, 0, bytes.Length, chars, 0);
   Debug.WriteLine(count + " bytes decoded.");

   // Show decoded characters
   foreach(char c in chars)
      Debug.WriteLine(c);
}

Remarks

RFC 2060 describes a modified UTF-7 encoding to use for IMAP mailbox names, as standard UTF-7 encoding causes some conflict with certain characters within the IMAP protocol (see the RFC, section 5.1.3 for a list of conflicts).

The PowerTCP Imap component uses this class to automatically manage mailbox name encoding/decoding.

Inheritance Hierarchy

System.Object
   System.Text.Encoding
      Dart.PowerTCP.Mail.ImapUTF7Encoding

Requirements

Target Platforms: Microsoft .NET Framework 2.0

See Also

Documentation Version 3.2
© 2010 Dart Communications. All Rights Reserved.