Без дальнейших хлопот посмотрим, как создать класс NNTP, с помощью которого можно отправить статью в выбранную телеконференцию.
Создание класса NNTP
Класс NNTP, который мы создадим, в целом внешне выглядит так же, как класс SMTP, который мы создали ранее, но методы buildHeaders() и talk() должны быть реализованы иначе. Можно обойтись без некоторых заголовков электронной почты, но необходимо добавить пару новых. Новый метод talk() анализирует коды ответов сервера NNTP. Класс My_Nntp можно построить как расширение класса My_Smtp_Mime_Mail.
Свойства
<?php
//
include("./my_smtp_mime^mail_class.php");
class extends My_Smtp_Mime_Mail
{
Зададим удаленный сервер NNTP и номер порта, на котором он ждет соединений:
var $nntp_host = var $nntp_port = 119;
Нужна также переменная для хранения телеконференций, в которую будет посылаться статья. Если телеконференций несколько, они перечисляются через запятую:
var $newsgroups = Переменная для хранения заголовка References:
var $ references = ";.- Строки с дополнительными сообщениями об особых ошибках:
var $ERR_NNTP_HOST_NOT_SET = 'NNTP host not set! '; var $ERR_NNTP_CONNECTIQN_FAILED = 'Failed to connect to the specified NNTP Host!';
var $ERR„NNTP_N0T_C0NNECTED = 'Establish a connection to an NNTP server
first! ';
var $ERR_EMPTY_FROM = "Snpty From header!";
var $ERR_EMPTY_NEWSGROUPS = "No newsgroup(s) specified!";'
var $ERR_GROUP_WITHOUT_ARG = 'GROUP command needs an argument!'; • var $ERR_POSTJITHOUT_ARG = 'POST command with empty article content!';
var $ERR_UNKNOWN_RESPONSE_FROM_SERVEF = 'Unknowr response from the server!' ;
var $ERR_POSTING_NOT_ALLOWED = "Posting not allowed on" this server!"; var $ERR_GROUP_POSTING_NOT_ALLOWED = "Posting not allowed on this newsgroup!";
var $ERRJ3R0UP_FAILED = 'GROUP command failed!'; var $ERR_NO_SUCH_GROUP = 'No such group!"; var $ERR_POST_FAILED = 'POSTcommand failed!'; var $ERR_QUIT_FAILED = 'QUIT.command failed!';
connect ()
Данный метод осуществляет соединение с сервером NNTP, устанавливая свойство $socket. Обратите внимание, что для подключения к серверу необходимо иметь соответствующие права доступа. Большинство серверов NNTP осуществляет контроль доступа по IP-адресу клиента, проверяя допустимость его домена. В этом методе проверяется также, разрешена ли публикация на указанном сервере. Код ответа 201 сигнализирует, что публикация запрещена, и тогда этот метод возвращает false, записав предварительно соответствующее значение в свойство для хранения внутреннего сообщения об ошибке: