Spec-Zone .ru
спецификации, руководства, описания, API


javax.mail.internet
Класс MimeUtility

java.lang.Object
  расширенный javax.mail.internet.MimeUtility

public class MimeUtility
расширяет java.lang. Объект

Это - утилита class, которая обеспечивает различный MIME связанная функциональность.

Есть ряд методов, чтобы закодировать и декодировать заголовки MIME согласно RFC 2047. Отметьте, что, вообще, эти методы не необходимы при использовании методов такой как setSubject и setRecipients; JavaMail будет автоматически кодировать и декодировать данные при использовании этих "высокоуровневых" методов. Методы ниже только необходимы когда maniuplating необработанное использование заголовков MIME setHeader и getHeader методы. Краткое описание при обработке таких заголовков дается ниже:

Почтовые заголовки RFC 822 должны содержать только символы US-ASCII. Заголовки, которые содержат не символы US-ASCII, должны быть закодированы так, чтобы они содержали только символы US-ASCII. В основном этот процесс включает использование или BASE64 или QP, чтобы закодировать определенные символы. RFC 2047 описывает это подробно.

В Java Строки содержат символы Unicode (на 16 битов). ASCII является подмножеством Unicode (и занимает диапазон 0 - 127). Строка, которая содержит только символы ASCII, уже почтово-безопасна. Если Строка содержит не символы US-ASCII, она должна быть закодирована. Дополнительная сложность в этом шаге - то, что, так как Unicode еще не является широко используемым набором символов, можно было бы хотеть к первому набору символов - кодируют Строку в другой набор символов и затем делают кодирование передачи.

Отметьте, что, чтобы получить фактические байты почтово-безопасной Строки (говорят, для того, чтобы передаться по SMTP), нужно сделать


        byte[] bytes = string.getBytes("iso-8859-1");   

 

setHeader и addHeader методы на MimeMessage и MimeBodyPart предполагают, что данные значения заголовка являются строками Unicode, которые содержат только символы US-ASCII. Следовательно вызывающие стороны тех методов должны обеспечить, чтобы значения, которые они передают, не содержали не символы US-ASCII. Методы в этом class помогают сделать это.

getHeader семейство методов на MimeMessage и MimeBodyPart возвращает необработанное значение заголовка. Они могли бы быть закодированы согласно RFC 2047, и если так, должны декодироваться в Строки Unicode. Методы в этом class помогают сделать это.

Несколько свойств System управляют строгим соответствием к спецификации MIME. Отметьте, что они не свойства сеанса, но должны быть установлены глобально как свойства System.

mail.mime.decodetext.strict декодирование средств управления свойством MIME закодированные слова. Спецификация MIME требует, чтобы закодированные слова запустили в начале пробела разделенное слово. Некоторые почтовые программы неправильно включают закодированные слова в середине слова. Если mail.mime.decodetext.strict Системное свойство устанавливается в "false", попытка будет предпринята, чтобы декодировать эти недопустимые закодированные слова. Значение по умолчанию является истиной.

mail.mime.encodeeol.strict свойство управляет выбором Кодирования передачи контента для частей MIME, которые не имеют типа "текст". Часто такие части будут содержать текстовые данные, для который кодирование, которое позволяет нормальный конец соглашений строки, является соответствующим. В редких случаях такая часть, будет казаться, будет содержать полностью текстовые данные, но потребует кодирования, которое сохраняет CR и символы LF без изменения. Если mail.mime.encodeeol.strict Системное свойство устанавливается в "true", такое кодирование будет использоваться когда необходимо. Значение по умолчанию является ложью.

Кроме того, mail.mime.charset Системное свойство может использоваться, чтобы определить набор символов MIME значения по умолчанию, чтобы использовать для закодированных слов и текстовых частей, которые иначе не определяют набор символов. Обычно, набор символов MIME значения по умолчанию получается из набора символов Java значения по умолчанию, как определено в file.encoding Системное свойство. У большинства приложений не будет никакой потребности явно установить набор символов MIME значения по умолчанию. В случаях, где набор символов MIME значения по умолчанию, который будет использоваться для почтовых сообщений, отличается чем набор символов, используемый для файлов, хранивших на системе, должно быть установлено это свойство.

Текущая реализация также поддерживает следующее свойство System.

mail.mime.ignoreunknownencoding свойство управляет ли неизвестные значения в Content-Transfer-Encoding заголовок, как передано к decode метод, вызовите исключение. Если установлено в "true", неизвестные значения игнорируются, и кодирование 8 битов принимается. Иначе, неизвестные значения заставляют MessagingException быть брошенным.

Автор:
Джон Мани, Билл Шеннон

Полевая Сводка
static int ВСЕ
           
 
Сводка метода
static java.io.InputStream decode(java.io.InputStream is, java.lang.String encoding)
          Декодируйте данный входной поток.
static java.lang.String decodeText(java.lang.String etext)
          Декодируйте "неструктурированные" заголовки, то есть, заголовки, которые определяются как '*text' согласно RFC 822.
static java.lang.String decodeWord(java.lang.String eword)
          Строка анализируется, используя правила в RFC 2047 и RFC 2231 для того, чтобы проанализировать "закодированное слово".
static java.io.OutputStream encode(java.io.OutputStream os, java.lang.String encoding)
          Оберните кодер вокруг данного потока вывода.
static java.io.OutputStream encode(java.io.OutputStream os, java.lang.String encoding, java.lang.String filename)
          Оберните кодер вокруг данного потока вывода.
static java.lang.String encodeText(java.lang.String text)
          Закодируйте "текстовый" маркер RFC 822 в почтово-безопасную форму согласно RFC 2047.
static java.lang.String encodeText(java.lang.String text, java.lang.String charset, java.lang.String encoding)
          Закодируйте "текстовый" маркер RFC 822 в почтово-безопасную форму согласно RFC 2047.
static java.lang.String encodeWord(java.lang.String word)
          Закодируйте маркер "слова" RFC 822 в почтово-безопасную форму согласно RFC 2047.
static java.lang.String encodeWord(java.lang.String word, java.lang.String charset, java.lang.String encoding)
          Закодируйте маркер "слова" RFC 822 в почтово-безопасную форму согласно RFC 2047.
static java.lang.String fold(int used, java.lang.String s)
          Сверните строку в линейном пробеле так, чтобы каждая строка больше не была чем 76 символов, если возможный.
static java.lang.String getDefaultJavaCharset()
          Получите набор символов значения по умолчанию, соответствующий текущей локали значения по умолчанию системы.
static java.lang.String getEncoding(javax.activation.DataHandler dh)
          То же самое как getEncoding(DataSource) за исключением того, что вместо того, чтобы читать данные из InputStream это использует writeTo метод, чтобы исследовать данные.
static java.lang.String getEncoding(javax.activation.DataSource ds)
          Получите кодирование передачи контента, которое должно быть применено к входному потоку этого источника данных, чтобы сделать это mailsafe.
static java.lang.String javaCharset(java.lang.String charset)
          Преобразуйте имя набора символов MIME на допустимое имя набора символов Java.
static java.lang.String mimeCharset(java.lang.String charset)
          Преобразуйте набор символов java на его имя набора символов MIME.
static java.lang.String quote(java.lang.String word, java.lang.String specials)
          Служебный метод, чтобы заключить слово в кавычки, если слово содержит какие-либо символы от указанного списка 'экстренного сообщения'.
static java.lang.String unfold(java.lang.String s)
          Разверните свернутый заголовок.
 
Методы, наследованные от class java.lang. Объект
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Полевая Деталь

ВСЕ

public static final int ALL
См. Также:
Постоянные Значения полей
Деталь метода

getEncoding

public static java.lang.String getEncoding(javax.activation.DataSource ds)
Получите кодирование передачи контента, которое должно быть применено к входному потоку этого источника данных, чтобы сделать это mailsafe.

Алгоритм, используемый здесь:

Параметры:
ds - DataSource
Возвраты:
кодирование. Это - или "7 битов", "заключил в кавычки - печатаемый" или "base64"

getEncoding

public static java.lang.String getEncoding(javax.activation.DataHandler dh)
То же самое как getEncoding(DataSource) за исключением того, что вместо того, чтобы читать данные из InputStream это использует writeTo метод, чтобы исследовать данные. Это более эффективно в общем падеже a DataHandler создаваемый с объектом и типом MIME (например, Строка "текста/плоскости"), потому что весь ввод-вывод делается в этом потоке. В случае, требующем InputStream DataHandler использует поток, пару потоков канала, и writeTo метод, чтобы произвести данные.

С тех пор:
JavaMail 1.2

декодировать

public static java.io.InputStream decode(java.io.InputStream is,
                                         java.lang.String encoding)
                                  throws MessagingException
Декодируйте данный входной поток. Входной возвращенный поток является декодируемым входным потоком. Все кодировки, определенные в RFC 2045, поддерживаются здесь. Они включают "base64", "заключил в кавычки - печатаемый", "7 битов", "8 битов", и "двоичный файл". Кроме того, "программа uuencode" также поддерживается.

В текущей реализации, если mail.mime.ignoreunknownencoding системное свойство устанавливается в "true", неизвестные значения кодирования игнорируются, и исходный InputStream возвращается.

Параметры:
is - входной поток
encoding - кодирование потока.
Возвраты:
декодируемый входной поток.
Броски:
MessagingException - если кодирование неизвестно

закодировать

public static java.io.OutputStream encode(java.io.OutputStream os,
                                          java.lang.String encoding)
                                   throws MessagingException
Оберните кодер вокруг данного потока вывода. Все кодировки, определенные в RFC 2045, поддерживаются здесь. Они включают "base64", "заключил в кавычки - печатаемый", "7 битов", "8 битов" и "двоичный файл". Кроме того, "программа uuencode" также поддерживается.

Параметры:
os - поток вывода
encoding - кодирование потока.
Возвраты:
поток вывода, который применяет указанное кодирование.
Броски:
MessagingException - если кодирование неизвестно

закодировать

public static java.io.OutputStream encode(java.io.OutputStream os,
                                          java.lang.String encoding,
                                          java.lang.String filename)
                                   throws MessagingException
Оберните кодер вокруг данного потока вывода. Все кодировки, определенные в RFC 2045, поддерживаются здесь. Они включают "base64", "заключил в кавычки - печатаемый", "7 битов", "8 битов" и "двоичный файл". Кроме того, "программа uuencode" также поддерживается. filename параметр используется с кодированием "программы uuencode" и включается в закодированный вывод.

Параметры:
os - поток вывода
encoding - кодирование потока.
filename - имя для закодированного файла (только используемый с программой uuencode)
Возвраты:
поток вывода, который применяет указанное кодирование.
Броски:
MessagingException
С тех пор:
JavaMail 1.2

encodeText

public static java.lang.String encodeText(java.lang.String text)
                                   throws java.io.UnsupportedEncodingException
Закодируйте "текстовый" маркер RFC 822 в почтово-безопасную форму согласно RFC 2047.

Данная строка Unicode исследуется на не символы US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит не символы US-ASCII, она сначала закодирована символом, используя набор символов значения по умолчанию платформы, то закодированное передачей использование или кодирование B или Q. Получающиеся байты тогда возвращаются как строка Unicode, содержащая только символы ASCII.

Отметьте, что этот метод должен использоваться, чтобы закодировать только "неструктурированные" заголовки RFC 822.

Пример использования:


  MimePart part = ...
  String rawvalue = "FooBar Mailer, Japanese version 1.1"
  try {
    // If we know for sure that rawvalue contains only US-ASCII 
    // characters, we can skip the encoding part
    part.setHeader("X-mailer", MimeUtility.encodeText(rawvalue));
  } catch (UnsupportedEncodingException e) {
    // encoding failure
  } catch (MessagingException me) {
   // setHeader() failure
  }

 

Параметры:
text - Строка Unicode
Возвраты:
Строка Unicode, содержащая только символы US-ASCII
Броски:
java.io.UnsupportedEncodingException - если кодирование перестало работать

encodeText

public static java.lang.String encodeText(java.lang.String text,
                                          java.lang.String charset,
                                          java.lang.String encoding)
                                   throws java.io.UnsupportedEncodingException
Закодируйте "текстовый" маркер RFC 822 в почтово-безопасную форму согласно RFC 2047.

Данная строка Unicode исследуется на не символы US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит не символы US-ASCII, она сначала закодирована символом, используя указанный набор символов, то закодированное передачей использование или кодирование B или Q. Получающиеся байты тогда возвращаются как строка Unicode, содержащая только символы ASCII.

Отметьте, что этот метод должен использоваться, чтобы закодировать только "неструктурированные" заголовки RFC 822.

Параметры:
text - значение заголовка
charset - набор символов. Если этот параметр является нулем, значение по умолчанию платформы chatset используется.
encoding - кодирование, которое будет использоваться. В настоящий момент поддерживаемые значения являются "B" и "Q". Если этот параметр является нулем, то кодирование "Q" используется, если большинство символов, которое будет закодировано, находится в наборе символов ASCII, иначе "B" кодирование используется.
Возвраты:
Строка Unicode, содержащая только символы US-ASCII
Броски:
java.io.UnsupportedEncodingException

decodeText

public static java.lang.String decodeText(java.lang.String etext)
                                   throws java.io.UnsupportedEncodingException
Декодируйте "неструктурированные" заголовки, то есть, заголовки, которые определяются как '*text' согласно RFC 822.

Строка декодируется, используя алгоритм, определенный в RFC 2047, Раздел 6.1. Если сбои преобразования набора символов для какой-либо последовательности, UnsupportedEncodingException бросается. Если Строка не является стилем RFC 2047 закодированный заголовок, она возвращается как есть

Пример использования:


  MimePart part = ...
  String rawvalue = null;
  String  value = null;
  try {
    if ((rawvalue = part.getHeader("X-mailer")[0]) != null)
      value = MimeUtility.decodeText(rawvalue);
  } catch (UnsupportedEncodingException e) {
      // Don't care
      value = rawvalue;
  } catch (MessagingException me) { }

  return value;

 

Параметры:
etext - возможно закодированное значение
Броски:
java.io.UnsupportedEncodingException - если преобразование набора символов перестало работать.

encodeWord

public static java.lang.String encodeWord(java.lang.String word)
                                   throws java.io.UnsupportedEncodingException
Закодируйте маркер "слова" RFC 822 в почтово-безопасную форму согласно RFC 2047.

Данная строка Unicode исследуется на не символы US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит не символы US-ASCII, она сначала закодирована символом, используя набор символов значения по умолчанию платформы, то закодированное передачей использование или кодирование B или Q. Получающиеся байты тогда возвращаются как строка Unicode, содержащая только символы ASCII.

Этот метод предназначается, чтобы использоваться, создавая RFC 822 "фразы". InternetAddress, который class, например, использует это, чтобы закодировать, это - компонент 'фразы'.

Параметры:
word - Строка Unicode
Возвраты:
Массив строк Unicode, содержащих только символы US-ASCII.
Броски:
java.io.UnsupportedEncodingException - если кодирование перестало работать

encodeWord

public static java.lang.String encodeWord(java.lang.String word,
                                          java.lang.String charset,
                                          java.lang.String encoding)
                                   throws java.io.UnsupportedEncodingException
Закодируйте маркер "слова" RFC 822 в почтово-безопасную форму согласно RFC 2047.

Данная строка Unicode исследуется на не символы US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит не символы US-ASCII, она сначала закодирована символом, используя указанный набор символов, то закодированное передачей использование или кодирование B или Q. Получающиеся байты тогда возвращаются как строка Unicode, содержащая только символы ASCII.

Параметры:
word - Строка Unicode
charset - набор символов MIME
encoding - кодирование, которое будет использоваться. В настоящий момент поддерживаемые значения являются "B" и "Q". Если этот параметр является нулем, то кодирование "Q" используется, если большинство символов, которое будет закодировано, находится в наборе символов ASCII, иначе "B" кодирование используется.
Возвраты:
Строка Unicode, содержащая только символы US-ASCII
Броски:
java.io.UnsupportedEncodingException - если кодирование перестало работать

decodeWord

public static java.lang.String decodeWord(java.lang.String eword)
                                   throws ParseException,
                                          java.io.UnsupportedEncodingException
Строка анализируется, используя правила в RFC 2047 и RFC 2231 для того, чтобы проанализировать "закодированное слово". Если синтаксический анализ перестал работать, ParseException бросается. Иначе, это декодируется передачей, и затем преобразовывается из набора символов в Unicode. Если преобразование набора символов перестало работать, UnsupportedEncodingException бросается.

Параметры:
eword - закодированное значение
Броски:
ParseException - если строка не является закодированным словом согласно RFC 2047 и RFC 2231.
java.io.UnsupportedEncodingException - если преобразование набора символов перестало работать.

кавычка

public static java.lang.String quote(java.lang.String word,
                                     java.lang.String specials)
Служебный метод, чтобы заключить слово в кавычки, если слово содержит какие-либо символы от указанного списка 'экстренного сообщения'.

HeaderTokenizer class определяет два специальных набора разделителей - MIME и RFC 822.

Этот метод обычно используется во время генерации RFC 822 и полей заголовка MIME.

Параметры:
word - слово, которое будет заключено в кавычки
specials - набор специальных символов
Возвраты:
возможно заключенное в кавычки слово
См. Также:
HeaderTokenizer.MIME, HeaderTokenizer.RFC822

сгиб

public static java.lang.String fold(int used,
                                    java.lang.String s)
Сверните строку в линейном пробеле так, чтобы каждая строка больше не была чем 76 символов, если возможный. Если есть больше чем 76 непробельных символов последовательно, строка сворачивается в первом пробеле после той последовательности. Параметр used указывает, сколько символов использовалось в текущей строке; это обычно - длина имени заголовка.

Отметьте, что разрывов строки в строке не оставляют; они, вероятно, должны быть.

Параметры:
used - символы, используемые в строке до сих пор
s - строка, чтобы свернуться
Возвраты:
свернутая строка
С тех пор:
JavaMail 1.4

открыться

public static java.lang.String unfold(java.lang.String s)
Разверните свернутый заголовок. Удаляются любые разрывы строки, которых не оставляют и сопровождаются пробелом.

Параметры:
s - строка, чтобы развернуться
Возвраты:
развернутая строка
С тех пор:
JavaMail 1.4

javaCharset

public static java.lang.String javaCharset(java.lang.String charset)
Преобразуйте имя набора символов MIME на допустимое имя набора символов Java.

Параметры:
charset - имя набора символов MIME
Возвраты:
эквивалентный набор символов Java. Если подходящее отображение не доступно, переданный в наборе символов самостоятельно возвращается.

mimeCharset

public static java.lang.String mimeCharset(java.lang.String charset)
Преобразуйте набор символов java на его имя набора символов MIME.

Отметьте, что будущая версия JDK (отправляют 1.2) могла бы обеспечить эту функциональность, когда, мы можем осудить этот метод тогда.

Параметры:
charset - набор символов JDK
Возвраты:
эквивалентный MIME/IANA. Если отображение не возможно, переданный в самом наборе символов возвращается.
С тех пор:
JavaMail 1.1

getDefaultJavaCharset

public static java.lang.String getDefaultJavaCharset()
Получите набор символов значения по умолчанию, соответствующий текущей локали значения по умолчанию системы. Если свойство System mail.mime.charset устанавливается, системный набор символов, соответствующий этому набору символов MIME, будет возвращен.

Возвраты:
набор символов значения по умолчанию локали значения по умолчанию системы, как набор символов Java. (НЕ набор символов MIME)
С тех пор:
JavaMail 1.1


Представьте ошибку или функцию

Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается срокам действия лицензии.

Сгенерированный на 10-February-2011 12:41

free hit counter