Описание работы с протколом передачи почты SMTP: отправка почты, проверка имени пользователя, вывод списков почтовых групп и др.
» Введение
Основная задача протокола SMTP (Simple Mail Transfer Protocol) заключается в том, чтобы обеспечивать передачу электронных сообщений (почту). Для работы через протокол SMTP клиент создаёт TCP соединение с сервером через порт 25. Затем клиент и SMTP сервер обмениваются информацией пока соединение не будет закрыто или прервано. Основной процедурой в SMTP является передача почты (Mail Procedure). Далее идут процедуры форвардинга почты (Mail Forwarding), проверка имён почтового ящика и вывод списков почтовых групп. Самой первой процедурой является открытие канала передачи, а последней - его закрытие.
Команды SMTP указывают серверу, какую операцию хочет произвести клиент. Команды состоят из ключевых слов, за которыми следует один или более параметров. Ключевое слово состот из 4-х символов и разделено от аргумента одним или несколькими пробелами. Каждая командная строка заканчивается символами CRLF. Вот синтаксис всех команд протокола SMTP (SP - пробел):
HELO MAILFROM: RCPTTO: DATA RSET SEND FROM: SOML FROM: SAML FROM: VRFY EXPN HELP NOOP QUIT
Обычный ответ SMTP сервера состоит из номера ответа, за которым через пробел следует дополнительный текст. Номер ответа служит индикатором состояния сервера.
» Отправка почты
Первым делом подключаемся к SMTP серверу через порт 25. Теперь надо передать серверу команду HELLO и наш IP адрес:
C: HELLO 195.161.101.33 S: 250 smtp.mail.ru is ready
При отправке почты передаём некоторые нужные данные (отправитель, получатель и само письмо):
C: MAIL FROM:'указываем отправителя S: 250 OK
C: RCPT TO:<
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
> 'указываем получателя S: 250 OK
C: DATA 'указываем серверу, что будем передавать содержание письма (заголовок и тело письма) S: 354 Start mail input; end with .'передачу письма необходимо завершить символами CRLF.CRLF S: 250 OK
C: From: Drozd <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
> C: To: Drol <
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
> C: Subject: Hello 'между заголовком письма и его текстом не одна пара CRLF, а две. C: Hello Drol! C: You will be die on next week! 'заканчиваем передачу символами CRLF.CRLF S: 250 OK
Теперь завершаем работу, отправляем команду QUIT:
S: QUIT C: 221 smtp.mail.ru is closing transmission channel
» Другие команды
SEND - используется вместо команды MAILи указыает, что почта должна быть доставлена на терминал пользователя. SOML, SAML - комбинации команд SEND или MAIL, SEND и MAIL соответственно. RSET - указвает серверу прервать выполнение текущего процесса. Все сохранённые данные (отправитель, получатель и др) удаляются. Сервер должен отправить положительный ответ. VRFY - просит сервер проверить, является ли переданный аргумент именем пользователя. В случае успеха сервер возвращает полное имя пользователя. EXPN - просит сервер подтвердить, что переданный аргумент - это список почтовой группы, и если так, то сервер выводит членов этой группы. HELP - запрашивает у сервера полезную помощь о переданной в качестве аргумента команде. NOOP - на вызов этой команды сервер должен положительно ответить. NOOP ничего не делает и никак не влияет на указанные до этого данные.