Well, all the help I got before helped significantly. I got the point
where I send the data to the mail server. But I have one problem....
Say I connected propery and got the right socket calls. Then I do the
following:
send(sockfd, string6, strlen(string6), 0);
string6 can be anything of any length, (just try and keep it under 1 k)
So, this will work fine. But if we try and repeat this command again. It
will send the first and not the second. No matter what string, length or
flags u have it won't send any commands after the first one. Am I
missing something. If it is helpful the actuall code from the source I
am using is at the bottom of the message.
Thanks,
- Matt
CODE:
ACMD(do_imail)
{
int sockfd, temp1;
struct sockaddr_in dest_addr;
char *hostname = "localhost";
int port = 25;
struct hostent *he;
char *string1, *string2, *string3, *string4, *string5, *string6;
string1 = "helo triplethreat.dyn.ml.org\r\n";
string2 = "mail from:circle@triplethreat.dyn.ml.org\r\n";
string3 = "rcpt to:modem-burn@geocities.com\r\n";
string4 = "data\r\n";
string5 = "hi hi testing hi\r\n";
string6 = ".\r\n";
one_argument(argument, arg);
if (!*arg)
{
send_to_char("Who would you like to E-Mail?\r\n", ch);
return;
}
if ((he=gethostbyname(hostname)) == NULL) {
send_to_char("Host Name error. Does not exist.\r\n", ch);
return;
}
if ((sockfd = socket(PF_INET, SOCK_STREAM, 0)) == -1)
{
send_to_char("Sorry, the socket was not avalible, perhaps another
person is just in the process of mailing.\r\n", ch);
return;
}
dest_addr.sin_family = PF_INET;
dest_addr.sin_port = htons(port);
dest_addr.sin_addr = *((struct in_addr *)he->h_addr);
memset((unsigned char *)&dest_addr.sin_zero, 0, sizeof(unsigned char
*));
/*connect socket to remote host*/
if (connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct
sockaddr_in)) == -1)
{
sprintf(buf, "Connection error. Report exact error to admin and the
followind number: %d/r/r", WSAGetLastError());
send_to_char(buf, ch);
return;
}
/*I have added error checking in all of these and none of them return
-1. And all say they sent all their data*/
temp1 = send(sockfd, string1, strlen(string1), 0);
sprintf(buf, "The size of string was %d of %d.\r\n", strlen(string1),
temp1);
send_to_char(buf, ch);
temp1 = send(sockfd, string2, strlen(string2), 0);
sprintf(buf, "The size of string was %d of %d.\r\n", strlen(string2),
temp1);
send_to_char(buf, ch);
temp1 = send(sockfd, string3, strlen(string3), 0);
sprintf(buf, "The size of string was %d of %d.\r\n", strlen(string3),
temp1);
send_to_char(buf, ch);
temp1 = send(sockfd, string4, strlen(string4), 0);
sprintf(buf, "The size of string was %d of %d.\r\n", strlen(string4),
temp1);
send_to_char(buf, ch);
temp1 = send(sockfd, string5, strlen(string5), 0);
sprintf(buf, "The size of string was %d of %d.\r\n", strlen(string5),
temp1);
send_to_char(buf, ch);
temp1 = send(sockfd, string6, strlen(string6), 0);
sprintf(buf, "The size of string was %d of %d.\r\n", strlen(string6),
temp1);
send_to_char(buf, ch);
close(sockfd);
send_to_char("As you wish!\r\n", ch);
return;
}
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST