Архитектура JavaMail и основные классы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Архитектура JavaMail и основные классы



Хотя в API JavaMail имеется множество классов и пакетов, изучив основные классы, вы убедитесь в том, что эти API — несложный, но очень мощный инструмент для оснащения ваших Java-приложений возможностями работы с электронной почтой.

В следующем разделе описаны некоторые из основных классов API JavaMail (рис. 14.2). Однако в данной главе обсуждаются не все эти классы. Дополнительную информацию по этой теме можно получить, посетив сайт http://Java.sun.com/products iavamail/index.html.

 

Java Activation Framework

Работа JavaMail ощутимо зависит от API Java Activation Framework (JAF). JAF обес­печивает возможность стандартным образом работать с данными самых разных типов (например, с изображениями, аудио- и видеоданными). Когда приложению нужно об­работать данные определенного типа, эти объекты JAF можно "активизировать" и ис­пользовать для обработки. JavaMail пользуется JAF для работы с присоединенными файлами. Когда клиентская программа JavaMail получает почтовое сообщение, она может воспользоваться технологиями JAF для создания экземпляров компонентов JavaBean, которые могут обеспечить выполнение всех команд, необходимых клиенту для прочтения, просмотра, печати и любой другой обработки содержимого сообщения.

JAF предоставляет следующие услуги для приложения: в Определение типа содержимого сообщения.

Создание набора команд, или операций, которые могут выполняться над содер­жимым сообщения.

Создание экземпляра JavaBean, предоставляющего доступ к данным. Другими словами, этот компонент выполняет команды, или операторы.

javax.mail.Session

Класс javax.mail.Session является отправной точкой API JavaMail. Этот класс обес­печивает для приложения возможность задавать такие свойства, как транспортный ме­ханизм и почтовый сервер, а также загружать классы, представляющие реализации про­вайдеров для различных почтовых протоколов и управления ими. Ниже приведены описания некоторых наиболее широко используемых методов.

Static Session getDefaultlnstance(Properties props, Authenticator authenticator)

Метод getDefaultInstance() возвращает ссылку на экземпляр объекта Session в зави­симости от указанных свойств и аутентификатора (authenticator). При первом вызове этого метода в JVM создается экземпляр Session и возвращается ссылка на него. При последующих вызовах этого метода ссылки на Session возвращаются только в том слу­чае, если значение свойства Authenticator не отличается от отправленного с вызовом, создавшим этот экземпляр Session. Если же значение свойства Authenticator отличается от первого, генерируется исключение SecurityException.

Session getlnstance(Properties props, Authenticator authenticator)

Метод getlnstance() создает и возвращает новый экземпляр Session в зависимости от указанных значений Properties и Authenticator.

Store getStore(Java.lang.String protocol) throws NoSuchProviderException

Метод getStore() возвращает экземпляр объекта Store для указанного протокола (на­пример, getStore("РОРЗ") для INBOX протокола РОРЗ).

Объекты Properties и Session

Объект Properties, использующийся для получения экземпляра объекта Session, со­здается следующим образом:

Java.util.Properties props = System.getProperties();

props.put("mail, store.protocol", "рорЗ");

props.put("mail.рорЗ.host", "mail.mydomain.com");

Session sess = Session.getlnstance(props, null);

В табл. 14.2 приведены описания возможных свойств объекта Session.

Таблица 14.2. Свойства объекта Session JavaMail

Свойство Описание Пример Значение по умолчанию
mail.transport, protocol Транспортный протокол, возвращаемый методом getTransport() по умолчанию mail.transport, protocol=smtp Session. Первый сконфигурированный транспортный протокол

 

Свойство

Описание

Пример

Значение

по умолчанию

 

mail.store.protocol

Архивный протокол,

возвращаемый

методом

Session. getStore()

по умолчанию

mail.store.

protocol=pop3

или mail.store.

protocol=imap

Первый

сконфигурированный

архивный протокол

 

mail.host

Хост "по умолчанию"

для протоколов,

свойство host которых

не установлено

mail.host=ucny.com

Локальная машина

 

mail.user

Пользователь

"по умолчанию" для

протоколов, свойство

user которых не

установлено

mail.user=pallen

user.name

 
 

 

 

 

 

mail.from

Обратный

адрес e-mail

mail.from=

pallen@ucny.com

Usend@machine-name

 

mail.protocol.host

Хост указанного

протокола

mail.pop3.host=

ucny.com

mail.host

 

mail.protocol.user

Пользователь

указанного протокола

mail.pop3.user=

jbambara

mail.user

 

mail.debug

Настройка отладки

по умолчанию —

программное

переопределение

возможно с помощью

метода

mail.debug=true

false

 
                 

 

Javax.mail.Store

Класс javax.mail.Store реализуется провайдером и обычно представляет почтовый ящик пользователя. Основное предназначение данного класса — выступать в роли контейне­ра для объектов Folder. Не забывайте о том, что РОРЗ может работать только с одной папкой. Этот класс позволяет клиентскому приложению производить считывание, за­пись, мониторинг и поиск по определенному почтовому протоколу. Ниже приведены описания некоторых наиболее часто применяемых методов: Folder getDefaultFolder() throws MessagingException

Метод getDefaultFolder() возвращает экземпляр объекта Folder, представляющий собой корневую папку Store. Внимание: для работы с РОРЗ этот метод не используется.

Folder getFolder(Java.lang.String name) throws MessagingException

Метод getFolder() возвращает экземпляр объекта Folder для указанного имени (на­пример, getFolder("INBOX") - для РОРЗ).

 

Javax.mail.Folder

Провайдер услуг реализует и класс javax.mail.Folder. Этот класс содержит сообще­ния и вложенные папки в виде иерархии, подобно используемой в Windows Explorer.

Помните, что РОРЗ может работать только с одной папкой INBOX. Имя INBOX заре-ервировано, оно является признаком корневой папки. Эта папка, закрытая по умол­чанию, может быть открыта в режимах READONLY (только для чтения) или READWR1TE (для чтения и записи). Ниже приведены описания некоторых наиболее часто применяемых методов:

boolean create(int type) throws MessagingException

Метод create() создает в архиве папку указанного типа. В случае успеха операции метод возвращает значение true, и false — в случае неудачи. В табл. 14.3 приведен:лисок типов создаваемых папок.

 

Таблица 14.3. Типы папок

Тип Описание
Folder.HOLDS_MESSAGES Folder. HOLDS_FOLDERS Folder. HOLDS_MESSAGES + Folder. HOLDSFOLDERS В этой папке могут храниться только сообщения В этой папке могут храниться только папки В этой папке могут храниться сообщения и папки

 

boolean delete(boolean recurse) throws MessagingException

Метод delete() позволяет удалить из архива Store закрытую папку. При успешном удалении он возвращает значение true, и false — при возникновении ошибки. Если аргументу recurse задано значение true, все вложенные папки вместе с содержащимися в них сообщениями также удаляются. Если же значение этого аргумента — false, а в папке содержатся вложенные папки, удалены они не будут (сообщения же, в зависимо­сти от реализации метода, могут удаляться или нет).

Message[] expunge() throws MessagingException

Метод expunge() уничтожает все сообщения, помеченные как удаленные, и возвра­щает массив удаленных объектов Message.

Message[] getMessages() throws MessagingException

Метод getMessages() считывает все содержащиеся в папке сообщения. Если сообще­ний в папке нет, возвращается пустой массив.

void open(int mode) throws MessagingException

Метод open() открывает папку в указанном режиме. Режим может принимать зна­чения Folder. READ_ONLY или Folder. READWRITE. Этот метод может использовать­ся только при работе с папками, способными содержать сообщения (т.е. тип которых — Folder.HOLDSMESSAGES).

boolean renameTo(Folder f) throws MessagingException

Метод renameTo() переименовывает закрытые папки. В качестве аргумента этому методу передается объект Folder, представляющий новое имя папки.

Message[] search(SearchTerm term) throws MessagingException

Метод search() производит в папке поиск сообщений, соответствующих указанному критерию. Метод возвращает массив, содержащий найденные сообщения или пустой массив, если совпадений поискового контекста не обнаружено. Поиск производится путем применения метода search (term, getMessages()) ко всем сообщениям папки.

Message[] search(SearchTerm term, Message[] msgs) throws MessagingException

Эта форма метода search() позволяет произвести контекстный поиск в массиве выб­ранных сообщений. Метод возвращает массив, содержащий найденные сообщения или пустой массив, если совпадений поискового контекста не обнаружено. Поиск произво­дится путем циклического обхода массива сообщений и вызова метода match() с ука­занным контекстом поиска.

void setFlags(Message[] msgs, Flags flag, boolean value) throws MessagingException

Метод setFlags() присваивает меткам указанного массива сообщений указанное зна­чение (существуют переопределенные версии этого метода, позволяющие выбирать со­общения по-другому). Указанные объекты Message должны относиться к одной папке. Список используемых меток приведен в табл. 14.4.

Таблица 14.4. Типы меток

Тип Описание
Flags.Flag. ANSWERED На сообщение ответили.
Flags.Flag.DELETED Сообщение помечено как удаленное.
Flags.Flag.DRAFT Сообщение-черновик.
Flags.Flag.FLAGGED Сообщение помечено.
Flags.Flag.RECENT Свежее сообщение.
Flags.Flag.SEEN Сообщение было просмотрено.
Flags.Flag.USER Папка поддерживает пользовательские метки.

 

Javax.mail.search

Критерии поиска в JavaMail указываются в виде дерева поисковых терминов. В табл. 14.5 приведены классы пакета search.

 

Таблица 14.5. Классы пакета javax.mail.search

Класс Описание и метод Constructor
AddressStringTerm AddressTerm AndTerm Сравнивает адреса сообщений Message. Отличается от класса AddressTerm тем, что сравнивает адреса как текстовые строки, а не как объекты Address. Сравнивает адреса сообщений Message. Логический оператор "И" для объектов SearchTerm. AndTerm(SearchTerm[] t) Constructor принимает массив объектов SearchTerm. Положительный результат выдается при совпадении всех элементов. AndTerm(SearchTerm t1, SearchTerm t2) Constructor принимает два объекта SearchTerm. Положительный результат выдается при совпадении обоих элементов.

 

Класс Описание и метод Constructor
BodyTerm Сравнивает тела сообщений Message. BodyTerm (java.lang.String pattern) Поиск в тексте производится только для сообщений типа Text, состоящих из одного фрагмента или многофрагментных/смешанных сообщений, в первой части тела которых содержится текст.
ComparisonTerm Формирует оператор сравнения. Используются DateTerm, IntegerComparisonTerm, ReceivedDateTerm, SentDateTerm и SizeTerm для выполнения сравнения данных соответствующих типов. Определяет следующие константы: EQ (равняется), GE (больше или равняется), GT (больше), LE (меньше или равняется), LT (меньше) и NE (не равняется).
DateTerm Проводит сравнение дат с использованием констант ComparisonTerm (EQ, GE, GT, LE, LT и NE). DateTermfint comparison, java.util.Date date)
FlagTerm Проводит сравнение меток сообщений Message. FlagTerm (Flags flags, boolean setting) Положительный результат выдается, если метки включены (если значение setting равно true) или выключены (если значение setting — false).
FromStringTerm Проводит сравнение заголовков адресов Address. FromStringTerm (Java.lang.String pattern) Отличается от класса FromTerm тем, что сравнивает адреса как текстовые строки, а не как объекты Address. Чувствительность к регистру отсутствует.
FromTerm Проводит сравнение заголовков адресов. FromTerm(Address address)
HeaderTerm Проводит сравнение заголовков Message со строкой (чувствительность к регистру отсутствует). HeaderTerm (Java.lang.String headerName, java.lang.String pattern)
IntegerComparisonTerm Проводит сравнение целых чисел с использованием констант ComparisonTerm (EQ, GE, GT, LE, LT и NE). lntegerComparisonTerm(int comparison, int number)
MessagelDTerm Проводит сравнение полей Messageld интернет-сообщений. MessagelDTerm(java.lang.String msgid)
MessageNumberTerm Проводит сравнение номеров сообщений. MessageNumberTerm(int number)
NotTerm Логический оператор "НЕ". Положительный результат выдается, если совпадения с критерием поиска нет, и наоборот. NotTerm(SearchTerm t)
OrTerm Логический оператор "ИЛИ" для объектов SearchTerm. OrTerm(SearchTerm[] t) Constructor принимает массив объектов SearchTerm. Положительный результат выдается при совпадении любого элемента. OrTerm(SearchTerm tl, SearchTerm t2) Constructor принимает два объекта SearchTerm. Положительный результат выдается при совпадении любого из них.

 

Класс Описание и метод Constructor

ReceivedDateTerm

Проводит сравнение дат получения сообщений.
ReceivedDateTerm(int comparison, java.util.Date date)

RecipientStringTerm

Проводит сравнение адресов получателя.
RecipientStringTerm(Message.RecipientType type, Java.lang.String
pattern)
Отличается от класса RecipientTerm тем, что сравнивает адреса как
текстовые строки, а не как объекты Address. Чувствительность к
регистру отсутствует.

RecipientTerm

Проводит сравнение адресов получателя.
RecipientTerm (Message.RecipientType type, Address address)
SearchTerm Основной класс для всех элементов поиска.

SentDateTerm

Проводит сравнение дат отправки сообщений с использованием
констант ComparisonTerm (EQ, GE, GT, LE, LT и NE).
SentDateTerm (int comparison, java.util.Date date)

SizeTerm

Проводит сравнение объема сообщений с использованием констант
ComparisonTerm (EQ, GE, GT, LE, LT и NE).
SizeTerm(int comparison, int size)

StringTerm

Реализует метод match() для строк String.
StringTerm(java.lang.String pattern)
StringTerm(java.lang.String pattern, boolean ignoreCase)

SubjectTerm

Сравнивает заголовок subject сообщения (чувствительность к
регистру отсутствует),
boolean match(Message msg)

 

Ниже приведен пример кода, в котором используется пакет javax.mail.search:

if (msg-in.match(new AndTerm(

new SubjectTerm("стандарты разработки"), new BodyTerm("отправить")))) {

Message msg-out = msg-in.reply();

msg-out.setText("Стандарты разработки: запрос получен.");

Transport.send(msg-out);

}

 

Javax.mail.Address

Класс javax.mail.Address — абстрактный класс, определяющий адрес сообщения. В большинстве случаев вы будете сталкиваться с такими реализациями этого класса, как javax.mail.internet.InternetAddress (см. ниже).

javax.mail.internet.lnternetAddress

javax.mail.internet.InternetAddress является реализацией класса javax.mail.Address и представляет адрес электронной почты. Этот класс применяется для указания получа­телей сообщения. Создать InternetAddress можно двумя способами:

• InternetAddress("e-mail@domain"), при помощи метода Constructor.

• Вызовом метода InternetAddress.parse("e-maill@domain, e-mail2@domain, e-mail3@domain,..."), принимающего в качестве параметра строку String и воз­вращающего массив элементов типа InternetAddress. Адреса электронной почты в строке String разделяются запятой.

javax.mail. Message

Класс javax.mail.Message определяет сообщение электронной почты. Это абстракт­ный класс, являющийся реализацией интерфейса javax.mail.Part. Объект Message обла­дает такими атрибутами, как строка темы, отправитель, получатель (получатели), а также дата отправки. Эти атрибуты, представленные парами имя-значение, содержат необходимую для адресации информацию и определяют структуру содержимого сооб­щения (тип содержимого). Кроме того, класс Message включает в себя содержимое сообщения и метки, указывающие состояние папки (см. метод setFlags() класса Folder, описанного ранее). Сообщения могут содержать или один объект содержимого, или несколько таких объектов. В обоих случаях содержимое сообщения хранится в объекте DataHandler.

javax.mail. internet.MimeMessage

Класс javax.mail.internet.MimeMessage является наиболее часто используемой реали­зацией javax.mail.Message и представляет сообщение в MIME-кодировке (Multi-purpose Internet Mail Extensions). MIME-сообщение может содержать текст, изображение, аудио-, видеофрагмент или данные другого типа. На рис. 14.3 изображены компоненты объекта MimeMessage.

MimeMessage может работать с сообщениями, состоящими из нескольких частей. Таким образом создается возможность подсоединения к сообщениям файлов. Ниже описано большинство методов MimeMessage, которыми пользуются при работе с этим объектом:

MimeMessage(Session session)

Метод MimeMessage() является стандартным конструктором этого объекта, он со­здает экземпляр пустого объекта message для данного объекта Session. Заголовку и меткам присваивается значение пустого объекта internetHeaders и объекта Flags соот­ветственно.

void addFrom(Address[] addresses) throws MessagingException

Метод addFrom() вставляет в существующее поле From указанные адреса. Если та­кого поля нет, оно создается.

void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException

Метод addRecipients() вставляет в сообщение данные адреса указанного типа полу­чателя. См. табл. 14.6 — в ней приведено описание типов получателей.

Таблица 14.6. Типы получателей

Тип получателя Описание
Message. RecipientType.ТО Для основных получателей
Message. RecipientType. СС Для получателей копий
Message.RecipientType.ВСС Для получателей скрытых копий
MimeMessage. RecipientType. NEWSGROUPS Для сообщений MimeMessages,
  отправленных в телеконференцию

Java.util.Enumeration getAHHeaders () throws MessagingException

Метод getAllHeadersO возвращает все заголовки в виде перечисления объектов Header. Если эти заголовки содержат символы, не входящие в таблицу US-ASCII, они кодиру­ются и их нужно раскодировать.

Java.util.Enumeration getAHHeaderLines () throws MessagingException

Метод getAHHeaderLines () возвращает все заголовки в виде перечисления объектов String. Строка заголовка содержит названия и значения полей. Address [] getAHRecipients Q throws MessagingException Метод getAllRecipientsO возвращает все адреса получателей сообщения.

Java.lang.Object getContent() throws java.io.IOException, MessagingException

Метод getContent() возвращает содержимое сообщения в виде объекта Java. Тип данных этого объекта зависит от содержимого (например, объект типа String возвраща­ется для содержимого типа "text/plain", объект MimeMultipart — для сообщения с содер­жимым типа "multipart". Объект типа InputStream возвращается, если тип содержимого неизвестен системе DataHandler. Этот метод извлекает содержимое сообщения, исполь­зуя метод getDataHandler().getContent().

DataHandler getDataHandler() throws MessagingException

Метод getDataHandler() возвращает объект DataHandler для хранения содержимого сообщения.

Flags getFlags() throws MessagingException

Метод getFlags() возвращает объект Flags, содержащий все метки данного сообще­ния. Объект Flags является копией внутреннего объекта Flags сообщения, поэтому внесенные в него изменения не отразятся на метках сообщения.

Folder getFolder()

Метод getFolder() (унаследованный от объекта Message) возвращает ссылку на пап­ку, из которой было загружено сообщение. Если этот метод применить к новому сооб­щению, он возвращает пустую ссылку.

Address[] getFrom() throws MessagingException

Метод getFrom() возвращает значение поля From заголовка. Если этого поля в за­головке нет, вместо него используется поле Sender, если же и его нет — возвращается пустой указатель.

java.io.InputStream getlnputStream() throws java.io.IOException, Mes sagingException

Метод getlnputstream() возвращает декодированный входной поток содержимого сообщения. Этот метод получает поток от объекта DataHandler; т.е. вызывает метод getDataHandler().getInputstream().

java.lang.String getMessagelD() throws MessagingException

Метод getMessagelD() возвращает значение поля Message-ID заголовка. Если это поле недоступно или у него нет значения, возвращается пустой указатель.

int getMessageNumber()

Метод getMessageNumber() (унаследованный от класса Message) возвращает номер сообщения. Номер сообщения — позиция сообщения по отношению к папке. Вновь созданные или унаследованные сообщения получают номер 0 (ноль);

другие действи­тельные номера сообщений начинаются с 1. Номер сообщения может измениться во время сеанса при удалении или стирании других сообщений папки.

java.util.Date getReceivedDate() throws MessagingException

Метод getReceivedDate() возвращает дату получения сообщения. Для сообщений MimeMessage этот метод пока что всегда возвращает пустой указатель;

однако в других реализациях класса Message он может возвращать значение.

Address[] getRecipients(Message.RecipientType type) throws MessagingException

Метод getRecipients() возвращает список получателей указанного типа.

Address[] getReplyTo() throws MessagingException

Метод getReplyTo() возвращает значение поля Reply-To заголовка. Если это поле недоступно или у него нет значения, вызывается метод getFrom() и возвращается его значение.

java.util.Date getSentDate() throws MessagingException

Метод getSentDate () возвращает значение поля Date заголовка. Это дата отправки сообщения. Если это поле недоступно или у него нет значения, возвращается пустой указатель.

int getSize() throws MessagingException

Метод getSize() возвращает объем содержимого сообщения в байтах. Если объем не удается определить, возвращается значение -1. Обратите внимание: в возвращаемом значении может быть неточно отражен реальный объем содержимого сообщения, а также может быть учтена (либо не учтена) его кодировка.

Java.lang.String getSubjectO throws MessagingException

Метод getSubject() возвращает декодированное значение поля Subject заголовка. Если это поле недоступно или у него нет значения, возвращается пустой указатель.

boolean isExpunged()

Метод isExpunged() (унаследованный от класса Message) проверяет, было ли сооб­щение стерто. Ни один другой метод, кроме getMessageNumber(), не может применять­ся к стертым сообщениям.

boolean isSet(Flags.Flag flag) throws MessagingException

Метод isSet() проверяет, установлено ли значение true для указанной в аргументе метки. Если это так, метод возвращает значение true, если же нет — false.

boolean match(SearchTerm term) throws MessagingException

Метод match() (унаследованный от класса Message) возвращает положительный ре­зультат, если сообщение соответствует указанному критерию поиска SearchTerm и от­рицательный — если нет.

Message reply(boolean replyToAll) throws MessagingException

Метод reply() создает объект Message и присваивает всем его заголовкам и атрибу­там значения, соответствующие ответу. В новом сообщении нет никакого содержимого;

его должен создать вызывающий этот метод объект. Поле Subject будет скопировано из оригинала письма и к нему будет добавлен префикс Re:. Если этот префикс уже име­ется, новый не создается.

Если это сообщение снабжено заголовком Message-Id, к нему присоединяется и заголовок In-Reply-To. Метке ANSWERED оригинала присваивается значение true. Если условию replyToAll присвоено значение true, новое сообщение будет адресовано всем получателям. Если же нет, то оно будет отправлено только отправителю оригинала (адрес которого будет получен вызовом метода getReplyTo()).

void saveChanges() throws MessagingException

Метод saveCnanges() обновляет соответствующие заголовки сообщения и приводит их в соответствие с его содержимым. В его функции входит и создание уникальных идентификаторов для новых сообщений. Если сообщение хранится в папке, все внесен­ные в него изменения сохраняются в этой папке.

При изменении любой части сообщения (заголовка или содержимого) необходимо вызвать метод saveChanges(), чтобы все изменения были сохранены. Если этого не сделать, изменения могут и не сохраниться (это зависит от реализации папки).

Сообщения, полученные из папок, открытых как READONLY, не должны моди­фицироваться — а значит, и метод saveChanges() также не должен вызываться.

void setContent(Java.lang.Object о,

Java.lang.String type) throws MessagingException

Этот вариант метода setContent() устанавливает содержимое и MIME-тип содержи­мого сообщения (например, setContent ("my content", "text/html")). Содержимое со­храняется в объекте DataHandler. Класс DataContentHandler для соответствующего типа данных должен быть установлен и доступен системе JavaMail — иначе этот метод не сможет корректно работать. Например, присоединить файл Acrobat PDF к сообщению при помощи вызова метода setContent (mypdf, "application/pdf') можно только если доступен класс DataContentHandler для типа "application/pdf.

void setContent(Multipart mp) throws MessagingException

Этот вариант метода setContent () присваивает содержимому сообщения значение содержимого объекта Multipart.

void setExpunged(boolean expunged)

Метод setExpunged () (унаследованный от класса Message) присваивает метке expunged объекта Message указанное значение.

void setFlags(Flags flag, boolean set) throws MessagingException

Метод setFlags() присваивает меткам сообщения указанные значения.

void setFrom() throws MessagingException

Этот вариант метода setFrom() присваивает полю From заголовка значение, возвра­щаемое методом InternetAddress.getLocalAddressO, замещая любое имевшееся ранее зна­чение.

void setFrom(Address address) throws MessagingException

Этот вариант метода setFrom() присваивает полю заголовка From значение данного адреса, замещая любое имевшееся ранее значение. Если массив адресов, передаваемый методу в качестве параметра, пуст, поле заголовка From удаляется.

void setRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException

Метод setRecipients() присваивает адреса получателей указанному типу. Описание типов получателей приведено в табл. 14.6.

void setReplyTo(Address[] addresses) throws MessagingException

Метод setReplyTo() устанавливает значение поля заголовка Reply-To. Если адрес, передаваемый методу в качестве параметра, пуст, это поле заголовка удаляется, void setSentDatefjava.util.Date date) throws MessagingException

Метод setSentDate() устанавливает значение поля заголовка Date. В этом поле хра­нится дата окончания письма и подготовки его к отправке. Если дата, передаваемая методу в качестве параметра, пуста, поле заголовка Date удаляется.

void setSubject(java.lang.String subject) throws MessagingException

void setSubject(java.lang.String subject, java.lang.String charset) throws MessagingException

Методы setSubject() устанавливают значение поля заголовка subject. Если в этом поле содержатся только символы таблицы US-ASCII, указывать применяемый набор символов не нужно. Если в этом поле содержатся символы, не входящие в таблицу US-ASCII, нужно указать используемый набор символов, и для поля будет установлена соответствующая кодировка. Если параметр, передаваемый этому методу, пуст, поле заголовка Subject удаляется.

void setText(java.lang.String text) throws MessagingException

Этот вариант метода setText() присваивает содержимому сообщения значение ука­занного объекта String, с MIME-типом text/plain. Производительность данного метода при работе с большими объемами текста невелика, так как он проверяет все символы текста, определяя, какой набор символов нужно использовать.

void setText(Java.lang.String text,

Java.lang.String charset) throws MessagingException

Этот вариант метода setText() присваивает содержимому сообщения значение ука­занного объекта String с MIME-типом text/plain. Содержимое объекта String при этом кодируется с использованием указанного набора символов.

javax.mail.Transport

Класс javax.mail.Transport также реализуется провайдером. Применяется он только с одной целью — для отправки сообщений с использованием указанного протокола. Сообщение отправляется вызовом статического метода send() (например send(Message msg, Address[] addresses)). Ниже приведено описание его наиболее часто использую­щихся методов:

void send(Message msg) throws MessagingException

Этот вариант метода send() отправляет сообщение всем получателям, адреса кото­рых указаны в сообщении (и которые можно получить вызовом метода getAllRecipients()), применяя соответствующие каждому адресу транспортные протоколы. Перед отправ­кой сообщения вызывается его метод saveChanges(). Если любой из адресов получате­лей указан неверно, генерируется исключение SendFailedException. Будет ли сообще­ние после этого успешно отправлено получателям, адреса которых указаны верно, зависит от реализации объекта Transport. Объект SendFailedException позволяет опреде­лить результат отправки сообщения каждому из адресатов с помощью следующих ме­тодов:

getInvalidAddresses() возвращает массив Address[], содержащий неверные адреса.

getValidSentAddressesO возвращает Address[], содержащий адреса, отправка сооб­щения по которым прошла успешно.

getValidUnsentAddresses() возвращает массив Address[], содержащий адреса, по которым отправить сообщения не удалось, void send(Message msg, Address[] addresses) throws MessagingException

Этот вариант метода send() отправляет сообщение по указанному адресу, игнорируя адреса, указанные в самом сообщении. Перед отправкой сообщения вызывается его метод saveChanges().

void sendMessage(Message msg, Address[] addresses) throws MessagingException

Метод sendMessage() отправляет сообщение по адресам, указанным в списке. Если любой из адресов получателей указан неверно, генерируется исключение SendFailedException, но сообщение все равно отправляется по правильным адресам. Этот метод не вызывает saveChanges() самостоятельно.

 



Поделиться:


Последнее изменение этой страницы: 2020-03-02; просмотров: 143; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 13.59.122.162 (0.148 с.)