- 论坛徽章:
- 0
|
/****************************头文件********************************/
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <errno.h>
#define MAXLINE 1024
int sockfd,n;
void readn(int fd,char *recvline,int size)//字节流套接口读函数
{
again:
while((n = read(fd,recvline,MAXLINE)) > 0)
{
if(errno == EINTR)
goto again;
recvline[n] = 0;/* null terminate */
if(fputs(recvline,stdout) == EOF)
{
printf("fputs error" ;
exit(0);
}
}
if(n < 0)
{
printf("read error" ;
exit(0);
}
}
void writen(int fd,char *recvline,int size)//字节流套接口写函数
{
size_t nleft;
ssize_t nwritten;
const char *ptr;
ptr = recvline;
nleft = size;
while(nleft > 0)
{
if((nwritten = write(fd,ptr,nleft)) <= 0)
{
if(errno == EINTR)
nwritten = 0; /* and call write() again */
else
{
printf("error" ; /* error */
exit(0);
}
}
nleft -= nwritten;
ptr += nwritten;
}
}
/******************主程序******************************/
#include "mymail.h"
int
main(int argc,char **argv)
{
struct sockaddr_in servaddr;
char sendline[MAXLINE];
char recvline[MAXLINE];
memset(&sendline,0x00,sizeof(sendline));
memset(&recvline,0x00,sizeof(recvline));
if(argc != 2)
{
printf("usage: mymail <IP address>\n" ;
exit(0);
}
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) < 0)
{
printf("socket error\n" ;
exit(0);
}
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(25);/* SMTP SERVER */
if(inet_pton(AF_INET,argv[1],&servaddr.sin_addr) <= 0)
{
printf("inet_pton error for %s\n",argv[1]);
exit(0);
}
if(connect(sockfd,(struct sockaddr*) &servaddr,sizeof(servaddr)) < 0)
{
printf("connect error" ;
exit(0);
}
else
printf("connection established at smtp port 25\n" ;
strcpy(sendline,"HELO xxx.xxx.xxx.xxx\r\n" ;
writen(sockfd,sendline,sizeof(sendline));
strcpy(sendline,"MAIL FROM:<xxxx@xxxx.com>\r\n" ;
writen(sockfd,sendline,sizeof(sendline));
strcpy(sendline,"RCPT TO:<root@xxxx.com>\r\n" ;
writen(sockfd,sendline,sizeof(sendline));
readn(sockfd,recvline,MAXLINE);
shutdown(sockfd,SHUT_RDWR);
return(0);
}
运行环境:
FREEBSD4.9 Release
编译环境cc
运行结果
connection established at smtp port 25
220 online.sdb.com ESMTP Sendmail 8.12.9p2/8.12.9; Mon, 17 Jul 2006 10:37:25 +0)
250 online.sdb.com Hello online.sdb.com [10.24.3.61], pleased to meet you
500 5.5.1 Command unrecognized: ""
500 5.5.1 Command unrecognized: ""
500 5.5.1 Command unrecognized: ""
为什么啊?![](static/image/smiley/default/em16.gif)
有没高手帮着看一下啦,谢谢! |
|