Spec-Zone .ru
спецификации, руководства, описания, API
|
|
|||||||||
ПРЕДЫДУЩИЙ КЛАСС СЛЕДУЮЩИЙ КЛАСС | ФРЕЙМЫ НИКАКИЕ ФРЕЙМЫ | ||||||||
СВОДКА: ВЛОЖЕННЫЙ | ПОЛЕ | CONSTR | МЕТОД | ДЕТАЛЬ: ПОЛЕ | CONSTR | МЕТОД |
java.lang.Object javax.mail.internet.MimeUtility
public class MimeUtility
Это - утилита 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
Деталь метода |
---|
public static java.lang.String getEncoding(javax.activation.DataSource ds)
Алгоритм, используемый здесь:
ds
- DataSource public static java.lang.String getEncoding(javax.activation.DataHandler dh)
getEncoding(DataSource)
за исключением того, что вместо того, чтобы читать данные из InputStream
это использует writeTo
метод, чтобы исследовать данные. Это более эффективно в общем падеже a DataHandler
создаваемый с объектом и типом MIME (например, Строка "текста/плоскости"), потому что весь ввод-вывод делается в этом потоке. В случае, требующем InputStream
DataHandler
использует поток, пару потоков канала, и writeTo
метод, чтобы произвести данные.
public static java.io.InputStream decode(java.io.InputStream is, java.lang.String encoding) throws MessagingException
В текущей реализации, если mail.mime.ignoreunknownencoding
системное свойство устанавливается в "true"
, неизвестные значения кодирования игнорируются, и исходный InputStream возвращается.
is
- входной потокencoding
- кодирование потока. MessagingException
- если кодирование неизвестноpublic static java.io.OutputStream encode(java.io.OutputStream os, java.lang.String encoding) throws MessagingException
os
- поток выводаencoding
- кодирование потока. MessagingException
- если кодирование неизвестноpublic static java.io.OutputStream encode(java.io.OutputStream os, java.lang.String encoding, java.lang.String filename) throws MessagingException
filename
параметр используется с кодированием "программы uuencode" и включается в закодированный вывод.
os
- поток выводаencoding
- кодирование потока.filename
- имя для закодированного файла (только используемый с программой uuencode) MessagingException
public static java.lang.String encodeText(java.lang.String text) throws java.io.UnsupportedEncodingException
Данная строка 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 java.io.UnsupportedEncodingException
- если кодирование перестало работатьpublic static java.lang.String encodeText(java.lang.String text, java.lang.String charset, java.lang.String encoding) throws java.io.UnsupportedEncodingException
Данная строка Unicode исследуется на не символы US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит не символы US-ASCII, она сначала закодирована символом, используя указанный набор символов, то закодированное передачей использование или кодирование B или Q. Получающиеся байты тогда возвращаются как строка Unicode, содержащая только символы ASCII.
Отметьте, что этот метод должен использоваться, чтобы закодировать только "неструктурированные" заголовки RFC 822.
text
- значение заголовкаcharset
- набор символов. Если этот параметр является нулем, значение по умолчанию платформы chatset используется.encoding
- кодирование, которое будет использоваться. В настоящий момент поддерживаемые значения являются "B" и "Q". Если этот параметр является нулем, то кодирование "Q" используется, если большинство символов, которое будет закодировано, находится в наборе символов ASCII, иначе "B" кодирование используется. java.io.UnsupportedEncodingException
public static java.lang.String decodeText(java.lang.String etext) throws java.io.UnsupportedEncodingException
Строка декодируется, используя алгоритм, определенный в 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
- если преобразование набора символов перестало работать.public static java.lang.String encodeWord(java.lang.String word) throws java.io.UnsupportedEncodingException
Данная строка Unicode исследуется на не символы US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит не символы US-ASCII, она сначала закодирована символом, используя набор символов значения по умолчанию платформы, то закодированное передачей использование или кодирование B или Q. Получающиеся байты тогда возвращаются как строка Unicode, содержащая только символы ASCII.
Этот метод предназначается, чтобы использоваться, создавая RFC 822 "фразы". InternetAddress, который class, например, использует это, чтобы закодировать, это - компонент 'фразы'.
word
- Строка Unicode java.io.UnsupportedEncodingException
- если кодирование перестало работатьpublic static java.lang.String encodeWord(java.lang.String word, java.lang.String charset, java.lang.String encoding) throws java.io.UnsupportedEncodingException
Данная строка Unicode исследуется на не символы US-ASCII. Если строка содержит только символы US-ASCII, она возвращается как есть. Если строка содержит не символы US-ASCII, она сначала закодирована символом, используя указанный набор символов, то закодированное передачей использование или кодирование B или Q. Получающиеся байты тогда возвращаются как строка Unicode, содержащая только символы ASCII.
word
- Строка Unicodecharset
- набор символов MIMEencoding
- кодирование, которое будет использоваться. В настоящий момент поддерживаемые значения являются "B" и "Q". Если этот параметр является нулем, то кодирование "Q" используется, если большинство символов, которое будет закодировано, находится в наборе символов ASCII, иначе "B" кодирование используется. java.io.UnsupportedEncodingException
- если кодирование перестало работатьpublic static java.lang.String decodeWord(java.lang.String eword) throws ParseException, java.io.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)
used
указывает, сколько символов использовалось в текущей строке; это обычно - длина имени заголовка. Отметьте, что разрывов строки в строке не оставляют; они, вероятно, должны быть.
used
- символы, используемые в строке до сих порs
- строка, чтобы свернуться public static java.lang.String unfold(java.lang.String s)
s
- строка, чтобы развернуться public static java.lang.String javaCharset(java.lang.String charset)
charset
- имя набора символов MIME public static java.lang.String mimeCharset(java.lang.String charset)
Отметьте, что будущая версия JDK (отправляют 1.2) могла бы обеспечить эту функциональность, когда, мы можем осудить этот метод тогда.
charset
- набор символов JDK public static java.lang.String getDefaultJavaCharset()
mail.mime.charset
устанавливается, системный набор символов, соответствующий этому набору символов MIME, будет возвращен.
|
|||||||||
ПРЕДЫДУЩИЙ КЛАСС СЛЕДУЮЩИЙ КЛАСС | ФРЕЙМЫ НИКАКИЕ ФРЕЙМЫ | ||||||||
СВОДКА: ВЛОЖЕННЫЙ | ПОЛЕ | CONSTR | МЕТОД | ДЕТАЛЬ: ПОЛЕ | CONSTR | МЕТОД |
Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается
Сгенерированный на 10-February-2011 12:41