В данной статье, по просьбе Василия приведу пример практического использования программирования сокетов для отправки электронной почты удаленному компьютеру.
Для отправки электронной почты необходимо установить соединение с сокетом по порту 25, который обычно используется для протокола SMTP(Simple Mail Transport Protocol — простой протокол передачи почты). Протокол SMTP описывает формат электронных сообщений. Вы можете подключаться к любому серверу, на котором выполняется служба SMTP. Однако сервер должен быть готов к приему запроса на соединение. Ранее серверы с демонами sendmail могли принимать любые электронные сообщения, но в настоящее время из-за большого объема спама в большинстве серверов встроена проверка и допуск почтовых сообщений только от разрешенных пользователей или IP-адресов.
Сразу после соединения с сервером следует послать заголовок сообщения в формате SMTP, который достаточно просто создать, а затем и текст сообщения так, как показано ниже:
- Создайте сокет на вашем компьютере:
12Socket s = new Socket("mail.vashserver.ru", 25); // порт 25 соответствует SMTPPrintWriter out = new PrintWriter(s.getOutputStream()); - В выходном потоке передайте следующую информацию:
12345678HELLO компьютер-отправительMAIL FROM: адрес отправителяRCPT TO: адрес получаетсяDATAпочтовое сообщение(любое количество строк).QUIT
В спецификации протокола SMTP(документ RFC 821) требуется, чтобы строки заканчивались символами /r и /n.
На некоторых SMTP-серверах достоверность данных не проверяется, то есть можно передать любую информацию об отправителе. Имейте в виду, что любой желающий может послать поддельное сообщение, например, с обратным адресом president@kremlin.com и приглашением посетить прием на красной площади.