|
The Network News Transfer Protocol (NNTP) control enables
applications to access a news server, list the available
newsgroups, retrieve articles and post new articles. It is common
for this control to be used in conjunction with the Mail Message
control to construct the articles, since a news article uses the
same general format as an email message.
The following properties, methods and events are available for
use by your application:
Initialize
Initialize the control and load the Windows Sockets library for the
current process. This method is normally not used if the control is
placed on a form in languages such as Visual Basic. However, if the
control is being created dynamically using a function similar to
CreateObject, then the application must call this method to
initialize the component before setting any properties or calling
any other methods in the control.
Connect
Establish a connection to the NNTP server. Once the connection has
been established, the other methods in the control may be used to
access the newsgroups and/or post new articles to the server.
Authenticate
Provide a user name and password to authenticate the client
session. This should only be used if required by the server. Not
all news servers require authentication, and some only require
authentication when posting articles. If you attempt to perform a
function that requires authentication, an error will be returned
that indicates you should authenticate and then retry the
operation.
Disconnect
Disconnect from the server and release any resources that have been
allocated for the client session. After this method is called, the
client session is no longer valid.
Uninitialize
Unload the Windows Sockets library and release any resources that
have been allocated for the current process. This is the last
method call that the application should make prior to terminating.
This is only necessary if the application has previously called the
Initialize method.
Newsgroups
News articles are posted in hierarchical groups, similar to how
files are stored in folders. Each level in the newsgroup hierarchy
is separated by a period, so newsgroup names look like
microsoft.public.vc. This is Microsoft's newsgroup for articles
about Visual C++ programming. Additional subgroups are used to
further narrow the topic; for example, there's the
microsoft.public.vc.3rdparty newsgroup for third party tools and
components for Visual C++, and the microsoft.public.vc.atl
newsgroup which discusses issues related to the ActiveX Template
Library. The NNTP control provides the following methods for
accessing newsgroups on the server:
ListGroups
This method requests that the server return a list of all of the
newsgroups that are available. The application can also request
that only groups which were created since a specific date should be
returned. This allows the application to maintain a list of
newsgroups on the local system, and then use this method to
periodically update that list based on the date it was last
modified. If the method is successful, the application should call
the GetFirstGroup method to begin processing the group list.
OnNewsGroup
This event is generated for each newsgroup returned by the
ListGroups method. Information about the group is passed to the
event handler as arguments to the event, including the name of the
group, the first available article number and the last available
article in the group.
SelectGroup
This method is used to select a newsgroup as the current group.
Once selected, the application has access to the articles in that
newsgroup.
News Articles
News articles are the messages posted to one or more newsgroups.
Articles are referenced by their article number, which is a value
assigned by the news server. These articles have a structure that
is the same as an email message, with some slightly different
headers. Because of this, you can use the Mail Message interface to
parse articles that you retrieve, as well as create new articles to
post to the server. The following methods are used to access and
create news articles:
ListArticles
This method requests that the server return a list of articles that
are available in the current newsgroup. The application can request
that all articles be returned, or only those articles which fall
into a certain range of article numbers.
OnNewsArticle
This event is generated for each article returned by the
ListArticles method. Information about the news article is passed
to the event handler as arguments to the event, including the
article ID, size, subject, author and date that the article was
posted.
GetArticle
Retrieve an article from the server, storing the contents in a
string buffer or byte array. This can be used to process the
contents of an article without the overhead of storing it in a file
on the local system.
StoreArticle
Retrieve an article from the server and store it in a file on the
local system.
PostArticle
This method posts an article to one or more newsgroups on the
server. A newsgroup article is similar to an email message, and the
MIME interface may be used to create the article headers and body.
One important difference is that the message must contain a header
named "Newsgroups" with the value set to the newsgroup or
newsgroups that the article should be posted to; multiple
newsgroups should be separated by commas. If this header is not
defined, the posting will be rejected by the server and the method
will return an error. You should also be aware that some servers
limit the number of newsgroups that a message can be posted to.
When an article is posted to more than one newsgroup at a time,
this is called cross-posting. Current convention says that an
article should not be cross-posted to more than five newsgroups at
a time. Also keep in mind that multiposting (posting the same
article to different newsgroups separately) is generally
discouraged and should never be done on USENET.
Attaching Files
It is possible to attach files to newsgroup articles; however it
should only be done if it is considered appropriate for the group.
Many newsgroups have their own acceptable use policies which
determine whether or not file attachments, particularly large
binary files, are acceptable. If the newsgroup accepts attachments,
you can use one of several methods for posting files. It is
recommended that you use the File
Encoding interface to handle the actual encoding of the
data.
Uuencode
A uuencoded file attachment is included directly in the body of the
message. Because the MIME interface creates a multipart message
even when uuencoding is specified, the File Encoding interface
should be used to encode the data and then it should be included in
the main body of the message.
Base64
A Base64 file attachment has the same structure as what is used by
email messages. This requires that a multipart message be created,
with the encoded data attached as a part of the message. You can
use the MIME control to create this kind of message. Note that not
all third-party newsreaders correctly handle multipart
messages.
yEnc
The newest encoding method used on USENET is called yEnc. Similar
to uuencoded attachments, the file data is part of the body of the
message. The File Encoding control should be used to encode the
data and then it should be included in the main body of the
message. More information about yEnc encoding can be found at
www.yenc.org
|