ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/host/c++/socket++-1.10/test/tsmtp.C
Revision: 1.2
Committed: Mon Jun 10 14:10:44 2002 UTC (22 years, 4 months ago) by tdb
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +0 -0 lines
State: FILE REMOVED
Error occurred while calculating annotation data.
Log Message:
Tidy up of files. These are all old things that are not only no longer used
but are also probably useless to anyone other than us. This saves checking
them out all the time, and makes the "cms/source" tree contain only current
stuff. They'll still exist in the attic's though :)

File Contents

# Content
1 #include <sockinet.h>
2 #include <stdio.h>
3
4 static void send_cmd(iosockstream&, const char* cmd=0);
5 static void get_text(iosockstream&);
6
7 int main(int ac, char** av)
8 {
9 if (ac != 3) {
10 cerr << "USAGE: " << av[0] << " hostname userid\n";
11 return 1;
12 }
13
14 iosockinet sio (sockbuf::sock_stream);
15
16 sio->connect(av[1], "smtp", "tcp");
17
18 send_cmd(sio, 0);
19 send_cmd(sio, "HELO kelvin.seas.virginia.edu");
20 send_cmd(sio, "HELP");
21 send_cmd(sio, "MAIL FROM:<test@test>");
22
23 char buf[512];
24 sprintf(buf, "RCPT TO:%s", av[2]);
25 send_cmd(sio, buf);
26
27 send_cmd(sio, "DATA");
28 cout << "terminate your input with cntrl-D\n\n";
29 while(cin.getline(buf, 511)) {
30 if (buf[0] == '.') sio << '.';
31 sio << buf << "\r\n";
32 }
33 sio << "\r\n.\r\n" << flush;
34 send_cmd(sio, 0);
35
36
37 send_cmd(sio, "HELP");
38
39 send_cmd(sio, "QUIT");
40
41 return 0;
42 }
43
44 void send_cmd(iosockstream& s, const char* cmd)
45 {
46 if (cmd) {
47 s << cmd << "\r\n" << flush;
48 }
49 get_text (s);
50 }
51
52 void get_text(iosockstream& s)
53 {
54 char buf[256];
55 int tmo = s->recvtimeout(1); // wait for 1 sec before timing out
56 while ( s.getline(buf, 255) ) {
57 if (buf[0] == '.' && buf[1] == '\r' && buf[2] == '\n') break;
58 cout << buf << endl;
59 }
60 if ( !s->is_eof() ) s.clear();
61 s->recvtimeout(tmo); //reset timeout to the previous value
62 }