Работа с электронной почтой - общий обзор 


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



ЗНАЕТЕ ЛИ ВЫ?

Работа с электронной почтой - общий обзор



Большинство пользователей компьютеров уже знакомы с электронной почтой, ко­торая намного опережает по популярности все остальные услуги, предоставляемые ин­тернетом. Сообщение электронной почты состоит из двух компонентов. Первый из них — заголовок, содержащий информацию о сообщении, включая адреса отправителе и получателя(лей). Второй компонент сообщения — его содержимое, которое, в свою очередь, может состоять из нескольких частей (например, текста и одного или более присоединенных файлов). Ниже приведен пример такого сообщения:

Received: from f45.lawl5.hotmail.com (64.4.23.45)

by mail01b.rapidsite.net (RS ver 1.0.60s) with SMTP id 032409761

for <reader@hotmail.con>;

Thu, 19 Jul 2001 05:07:14 -0400 (EOT)

Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC;

Thu, 19 Jul 2001 02:07:05 -0700

Received: from 193.250.45.34 by Iwl5fd.lawl5.hotmail.msn.com with HTTP;

Thu, 19 Jul 2001 09:07:04 GMT

X-Originating-IP: [193.250.45.34]

From: sender@hotmail.com

To: readerOhotmail.com

Вес:

Subject: Тебе стоит знать

Date: Thu, 19 Jul 2001 09:07:04

Mime-Versidn: 1.0

Content-Type: text/plain;

format=flowed

Message - ID: <F45ifWoqFXfyY0QUUBP0000040b@hotmail.com> X-OriginalArrivalTime: 19 Jul 2001 09:07:05.0117 (UTC) FILETIME=[2E1D5CDO:01C11032] X-Loop-Detect: 1

X-UIDL: Cbae30a3b2b484793e76dbbael863ead.9c PA:

Я согласен. JB

В этом сообщении заголовок и содержимое разделены пустой строкой. Каждый атрибут заголовка располагается в собственной строке, содержащей имя атрибута, от­деленное от его значения двоеточием.

Программа-почтовый клиент знает, как принимать и отправлять сообщения потому, что умеет работать с различными почтовыми протоколами. В их число входят Simple Mail Transfer Protocol (SMTP), применяющийся для отправки почты, и Post Office Protocol 3 (РОРЗ) или Internet Message Access Protocol 4 (IMAP4), использующиеся для приема почты. IMAP4 несколько превосходит РОРЗ по возможностям;

он, например, может работать с папками и маркерами состояния. Существует еще один протокол — Multipurpose Internet Mail Extensions (MIME), являющийся стандартным форматом передачи сообщений в интернете.

Что делает JavaMail?

API JavaMail представляет собой набор абстрактных API, являющихся надстройкой над системой поставщика услуг электронной почты. API JavaMail, как и другие API J2EE, создает для клиентских приложений Java стандартную и независимую среду, в которой они могут свободно пользоваться почтой, что позволяет разработчикам созда­вать с помощью J2EE программы, обеспечивающие следующие возможности:

Создание сообщений, в том числе и многокомпонентных, содержащих присое­диненные файлы

Отправка сообщений на определенные серверы

Получение сообщений и сохранение их в папках

Разработчику, использующему J2EE, нет необходимости разбираться в соответству­ющих протоколах. Основную работу с почтой выполняют провайдеры услуг, так как содержат обработчики почтовых протоколов (например РОРЗ, IMAP4, SMTP). В стан­дартом варианте JavaMail фирмы Sun имеются провайдеры для всех наиболее распро­страненных протоколов (SMTP, IMAP4, MIME). Кроме того, компанией Sun был создан отдельный провайдер для РОРЗ. Существуют и провайдеры сторонних производителей для приложений наподобие Microsoft Exchange и Lotus Notes, есть и возможность соб­ственноручного создания провайдеров.

Архитектура API JavaMail является открытой, так что она сможет работать с прото­колами и стандартами будущего. На рис. 14.1 изображено общение клиентского прило­жения Java с обработчиком протокола провайдера. Провайдеры могут обрабатывать протоколы двух типов. Первый — транспортный (Transport), отправляющий сообщения к пункту назначения. Наиболее распространенным транспортным протоколом является SMTP. Второй — архивный (Store), предоставляющий доступ к сообщениям, уже дос­тавленным в почтовый ящик. Наиболее распространенным архивным протоколом се­годня является РОРЗ, но все большую популярность завоевывает IMAP4.

Если клиентское приложение Java работает с пакетами API JavaMail, ему для чтения почты нужно сетевое соединение с сервером РОРЗ или IMAP4. При отправке почты нужно сетевое соединение с почтовым сервером SMTP. Услуги таких серверов предо­ставляются либо в локальной сети (например, в корпорациях или других организаци­ях), либо Internet-провайдером (ISP) (пользователям коммутируемых/кабельных/DSL каналов связи).

 

Реестр провайдеров

Как уже упоминалось выше, JavaMail является расширяемой системой. Это означа­ет, что если будут разработаны новые протоколы, созданные ранее приложения JavaMail смогут использовать их, когда те будут загружены в реестр провайдеров. Реестр провай­деров — это список доступных провайдеров, которые могут быть обнаружены приложе­ниями на базе JavaMail.

Провайдеры, в которые встроен интерфейс JavaMail, перечислены в java-mail.default.providers. При установке пакета, содержащего новый провайдер, в его пап­ке META-INF должен тоже быть создан файл javamail.providers.

Получить список доступных в вашей системе провайдеров можно, откомпилировав и запустив следующий код:

import javax.mail.*;

class ListProviders {

public static void main(String[] args) {

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

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

Provider[] provs = sess. getProviders ();

for (int i=0;i < provs. length;++i) {

System.out.println(provs[i]);

}

}

}

На выходе получится что-то вроде этого:

javax.mail.Provider[STORE,рорЗ],

com.sun.mail.рорЗ.POP3Store,Sun Microsystems, Inc] javax.mail.Provider[STORE,imap],

com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc] javax.mail.Provider[TRANSPORT,smtp],

com.sun.mail.smtp.SMTPTransport, Sun Microsystems, Inc]

Провайдер услуг создает абстрактные классы с учетом используемых протоколов или системы. Например, провайдер IMAP для реализации JavaMail API использует IMAP4. Клиентские приложения могут создаваться с учетом использования таковой реализации для работы с электронной почтой и ее папками.

Для того чтобы программой-провайдером могли пользоваться клиентские приложе­ния JavaMail, последняя должна храниться в пакете. Создать пакет можно следующим образом:

Дайте пакету имя. Общепринятой практикой для этого является использование корпоративных доменных имен, но в обратном порядке (например, провайдер РОРЗ компании UCNY Inc. называется com.ucny.mail.pops).

Определите классы как public. Это позволит JavaMail создавать экземпляры ваших классов.

Загрузите провайдер в JAR-файл. Этот файл должен быть добавлен к пути поиска классов (classpath) клиентского приложения.

Создайте для протокола запись в реестре провайдеров. Эта запись представляет собой простой список атрибутов, описывающих данную реализацию. В ней имеет­ся пять пар имя-значение (описывающих реализацию протокола), разделенных точ­ками с запятыми. Описание значений этих атрибутов приведено в табл. 14.1.

Создайте соответствие между типом адреса и вашим протоколом. Если вы создали программу, с помощью которой клиентские приложения смогут отправлять почту, необходимо создать соответствие между типом адреса, с которым работает ваша реализация, и вашим протоколом. Соответствие записывается в формате addressType=protocol, где

addressType — строка, возвращаемая методом getType() подкласса Address

protocol — значение атрибута protocol, которое вы определили на этапе 4

Например, запись, относящаяся к РОРЗ-провайдеру компании UCNY, Inc. выгля­дит так:

protocol=pop3;type=store;class=com.ucny.рорЗ.POP3Store;

vendor=UCNY, Inc.;version=l.3

Таблица 14.1. Атрибуты протоколов в реестре провайдеров

Атрибут Описание
protocol Имя протокола, например — рорЗ, imap или smtp
type Тип протокола (транспортный или архивный)
class Пакет и имя класса, реализующего протокол
vendor Производитель (необязательно)
version Номер версии (необязательно)

Пользователи или администраторы приложения JavaMail должны ввести в реестр соответствующую запись (вручную или с помощью программы настройки). Таким об­разом происходит подключение провайдера к системе JavaMail клиента. Реестр пред­ставляет собой набор файлов ресурсов, а файл, в котором содержатся сведения о про­вайдерах JavaMail, называется javamail.providers. При необходимости JavaMail ведет поиск ресурсных файлов провайдеров в следующем порядке:

java.home/lib/javamail.providers

META-INF/javamail.providers

Разработчики провайдеров должны обеспечивать и соответствующие записи для ре­естра и требовать, чтобы их вносили в один из этих файлов.

Пользователям или администраторам приложения JavaMail, кроме того, придется расположить в реестре address.map соответствия (вручную или с помощью программы настройки). Файл, в котором хранится соответствие, называется javamail.address.map Система JavaMail ищет ресурсные файлы address.map в следующем порядке:

java. home/lib/javamail. address, map

META-INF/javamail.address.map

Разработчики провайдеров должны также обеспечивать соответствия и требовать, чтобы их вносили в один из этих файлов.

 



Поделиться:


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

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