Создание почтовой службы в стандартном Java

Цель занятия

Ознакомиться с построением простого почтового клиента для сети Internet. Научиться формировать почтовое сообщение и получать ответные сообщения от почтового сервера. Дополнительные сведения можно найти в [15].

Краткие теоретические сведения

Рассмотрим сравнительно небольшой вопрос реализации связи с почтовым сервером. Нам надлежит создать программу почтового клиента для отсылки письма почтовому серверу. Последний доставит письмо по указанному в нем адресу.

Почтовый клиент использует протокол SMTP (Mail Transporting Protocol), имеющий следующий набор команд:

□               HELO localhost/domain.name — устанавливает соединение с сервером;

□               MAIL FROM user@email.com — определяет адрес отправителя письма;

□               RCPT ТО user@mail.com — определяет адрес получателя письма;

□               DATA — определяет начало данных письма:

======= текст письма =====

□               QUIT — разрыв соединения.

Таким образом, наш почтовый клиент должен вставить указанные выше команды в письмо и направить его через почтовый сокет серверу.

Следующая программа (листинг2.31) реализует указанную цель и составляет предмет исследования в этом занятии. Приводим ее текст с комментариями по ходу программы.

| Листинг 2.31. Программа почтового клиента

import java.io.*; import java.net.*;

public class mailclient

static PrintStream ps=null; // Статическая объектная

// переменная для // класса вывода в сокет static DataInputStream dis=null; // Статическая объектная

// переменная // для класса ввода

public static void send (String str) throws IOException { // Программа для отправки письма ps.println(str); // Текст письма – в str ps.flush(); // Этот метод всегда используется // для очистки буфера вывода System.out.println("Сообщение отослано");

}

public static void receive() // Получение ответа SMTP-сервера throws IOException {

String readstr=dis.readLine();

// Вывод ответа сервера SMTP:

System.out.println("SMTP-response: "+readstr);

}

public static void main(String [] args)

{

String hello="HELO "; // Заголовок письма

String mailfrom="MAIL FROM:vovochka0koshkindom.com";

// Напишите, откуда идет письмо

String rcptto="RCPT ТО: naderevniu0dedushke.com";

// Напишите, куда идет письмо

String subject= "SUBJECT: JAVA is COOL ! "; // Тема письма

String data="This is to my uncle"; // Текст письма

String body="Congratulations with first SMTP-channel to YOU.";

// Финальный аккорд – точка – завершает послание

Socket smtp=null; // Объявление почтового сокета try

// 25 — это стандартный номер порта SMTP smtp= new Socket("smtp.any.com",25);

OutputStream os=new smtp.getOutputStream(); ps= new PrintStream(os);

InputStream is= smtp.getInputStream(); dis= new DataInputStream(is);

}

catch( IOException e)

U

try

{

String loc=InetAddress.getlocalHost().getHostName() // Получаем Интернет-адрес хоста, на котором // располагается реальный почтовый сервер

send(hello+loc); // Посылка первой команды

receive(); // Получаем ответ почтового сервера

send(mailfrom); // Посылка второй команды

receive(); // Получаем ответ почтового сервера

send(rcptto); // Посылка третьей команды

receive(); // Получаем ответ почтового сервера

send(data); // Посылаем данные

receive(); // Получаем ответ почтового сервера

send(subject); // Посылка темы

receive(); // Получаем ответ почтового сервера

send(body); // Посылка тела сообщения

receive(); // Получаем ответ почтового сервера

smtp.close ();

}

catch(IOException e)

u

Вы должны понимать, что в письме указывается адрес отправителя и адрес получателя. Это обычные е-таП-адреса. Вместе с этими адресами следует определить адрес почтового сервера. Этот адрес следует занести в переменную ioc.

Для запуска данного приложения следует заменить адреса получателя и отправителя и адрес домена на реальные адреса. Нам нужно получить адрес домена, определяющего дислокацию почтового сервера. Например, воспользуйтесь адресом www.mail.ru, где имеется почтовый сервер, либо yahoo.com.

Работу следует выполнять при активном соединении с сетью Internet. Вам необходимо направить письмо самому себе при наличии у вас, разумеется, почтового ящика. Желаем успеха!

Источник: Герман О. B., Герман Ю. О., Программирование на Java и C# для студента. — СПб.: БХВ-Петербург, 2005. — 512 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100