📄 smtptest.c
字号:
/*
char tmp[20] = "0";
usersrc = tmp;
printf("==%s\n",userdes);
printf("=%s\n",usersrc);
Base64_Decode((unsigned char *)userdes,(unsigned char *)usersrc);
printf("=%s\n",usersrc);
*/
send_data = "EHLO Localhost\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
send_data = "AUTH LOGIN\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
sprintf(ch,"%s\r\n",userdes);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
sprintf(ch,"%s\r\n",passdes);
rt = send(s,(char *)ch,strlen(ch),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
return 1;
}
int SendMail(const char *from,const char *to,const char *date,const char *subject,const char *data)
{
if(from == NULL || to == NULL || date == NULL || subject == NULL)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(From,"MAIL FROM: <%s>\r\n",from);
rt = send(s,From,strlen(From),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
sprintf(To,"RCPT TO: <%s>\r\n",to);
rt = send(s,To,strlen(To),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
send_data = "DATA\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
sprintf(From,"From: %s\r\n",from);
rt = send(s,From,strlen(From),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(To,"To: %s\r\n",to);
rt = send(s,To,strlen(To),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(Date,"Date: %s\r\n",date);
rt = send(s,Date,strlen(Date),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(Subject,"Subject: %s\r\n",subject);
rt = send(s,Subject,strlen(Subject),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
//添加版本号
sprintf(tmpbuf,"MIME-Version: 1.0\r\n");
rt = send(s,tmpbuf,strlen(tmpbuf),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(tmpbuf,"Content-Type: multipart/mixed;boundary=\"boundary=_xiezhiqiang\"\r\n");
rt = send(s,tmpbuf,strlen(tmpbuf),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(tmpbuf,"Content-Transfer-Encoding: 7bit\r\n");
rt = send(s,tmpbuf,strlen(tmpbuf),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "This is a MIME Encoded Message\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(tmpbuf,"--boundary=_xiezhiqiang\r\n");
rt = send(s,tmpbuf,strlen(tmpbuf),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(tmpbuf,"Content-Type: text/plain; charset=us-ascii\r\n");
rt = send(s,tmpbuf,strlen(tmpbuf),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(tmpbuf,"Content-Transfer-Encoding: 7bit\r\n");
rt = send(s,tmpbuf,strlen(tmpbuf),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
rt = send(s,(char *)data,strlen(data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
return 1;
}
int SendAffix(const char *filename )
{
int len;
int length;
char attachname[1000] = "0";
FILE *fp=NULL;
unsigned char datasrc[58],datades[100];
unsigned char *datades1;
fp = fopen(filename,"rb");
if(fp==NULL)
{
printf("can not open file");
return -1;
}
fseek(fp,0,SEEK_END);
length = ftell(fp);
fseek(fp,0,SEEK_SET);
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "--boundary=_xiezhiqiang\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
printf("send error");
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(Filename,"Content-Type: text/plain;name=\"%s\"\r\n",filename);
rt = send(s,Filename,strlen(Filename),0);
if(rt == SOCKET_ERROR)
{
printf("sendfilenameerror");
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "Content-Transfer-Encoding: base64\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
printf("sendcodemethoderror");
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(attachname,"Content-Disposition: attachment;filename=\"%s\"\r\n",filename);
rt = send(s,attachname,strlen(attachname),0);
if(rt == SOCKET_ERROR)
{
printf("sendfilenameerror");
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
int sendlen = 0;
int stringlen = 0;
int timedelay,timedelay1;
len = length;
// bbase64 mybase64;
while(!feof(fp))
{
if(len>=57)
{
fread(datasrc,57,1,fp);
datasrc[57]='\0';
stringlen = 57;
len -= 57;
}
else if(len>0)
{
fread(datasrc,len,1,fp);
datasrc[len]='\0';
stringlen = len;
len = 0;
}
else
break;
// mybase64.b64encode((char *)datasrc, (char *)datades);
// sendlen = Base64Enc11((unsigned char *)datades,(unsigned char *)datasrc,stringlen);
Base64Encode22((unsigned char *)datades,(unsigned char *)datasrc,stringlen);
// Base64Enc11((unsigned char *)datades,(unsigned char *)datasrc,stringlen);
// datades = (unsigned char *)encode((unsigned char *)datasrc,stringlen);
for( timedelay=0;timedelay<1000;timedelay++)
for( timedelay1=0;timedelay1<1000;timedelay1++);
rt = send(s,(char *)datades,strlen((char *)datades),0);
// rt = send(s,(char *)datades,sendlen,0);
if(rt == SOCKET_ERROR)
{
printf("sendbase64dataerror");
shutdown(s,SD_BOTH);
close(s);
return -1;
}
}
fclose(fp);
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
sprintf(tmpbuf,"--boundary=_xiezhiqiang--");
rt = send(s,tmpbuf,strlen(tmpbuf),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
printf("send affix ok\n");
return 1;
}
int End()
{
send_data = "\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
send_data = "\r\n.\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
send_data = "QUIT\r\n";
rt = send(s,send_data,strlen(send_data),0);
if(rt == SOCKET_ERROR)
{
shutdown(s,SD_BOTH);
close(s);
return -1;
}
if(!GetResponse())
return -1;
return 1;
}
int main(int argc,char *argv[])
{
/*
char *host = "202.108.252.140"; //smtp.tom.com
char *username = "****";
char *password = "****";
char *m_From = "****@****";
char *m_To = "****@****";
*/
char *host ="202.108.255.203";//"202.108.255.203";//"218.30.111.171";// "202.108.252.140"; //smtp.tom.com
char *username = "geejunser";
char *password = "19811205";
char *m_From = "geejunser@tom.com";
char *m_To = "geejunser@tom.com";
char *m_date = "2006-4-7,22:27";
char *m_Subject = "the ip and mac address for ddns";
char *m_data = (char*)malloc(100);
char *ip = (char*)malloc(20);
if(argc < 1)
{
printf("agrv error\n");
free(m_data);
free(ip);
}
if(GetLocalAddress(ip) == -1)
{
printf("get lcoal ip fail\n");
free(ip);
return -1;
}
char *vmac = (char*)malloc(20);
if(GetLocalMac(vmac) == -1)
{
printf("get local mac fail\n");
free(ip);
free(vmac);
return -1;
}
sprintf(m_data,"The IP Address :%s\nThe Mac Address:%s",ip,vmac);
//printf("%s\n",m_data);
From = (char*)malloc(40);//new char[40];
To = (char*)malloc(40);//new char[40];
Date = (char*)malloc(40);//new char[40];
Subject = (char*)malloc(40);//new char[40];
Filename = (char*)malloc(100);
tmpbuf = (char*)malloc(100);
recv_data = (char*)malloc(512);
userdes = (char*)malloc(40);
passdes = (char*)malloc(40);
port = 25;
s = INVALID_SOCKET;
if(!CreateSocket())
{
printf("socket create error\n");
return -1;
}
printf("create the scoket\n");
if(!ConnectHost(host))
{
printf("can not connect the host\n");
return -1;
}
printf("connect the smtp host\n");
if(!LogIn(username,password))
{
printf("login error\n");
return -1;
}
printf("login\n");
if(!SendMail(m_From,m_To,m_date,m_Subject,m_data))
{
printf("send mail error\n");
return -1;
}
printf("send mail \n");
if(SendAffix("test.txt") != 1)
{
printf("send affix error\n");
}
if(!End())
{
printf("End error\n");
return -1;
}
printf("send over\n");
Destory();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -