📄 sendmail.cpp
字号:
#include "stdafx.h"
#include <winsock.h>
#include <string.h>
#include <stdio.h>
BOOL SendMail();
BOOL SendMail()
{
char queque[256];
WORD ver=MAKEWORD(2,0);
WSADATA wsaData;
int ERet;
ERet=::WSAStartup(ver,&wsaData);
if(ERet!=0)
{
::MessageBox(NULL,"WSAStartup Error","WARING",MB_OK);
return TRUE;
}
//get host infomation.
struct hostent *host;
host=gethostbyname("smtp.163.net");
/*
struct in_addr sa;
sa.S_un.S_addr=*(long*)host->h_addr_list[0];
char *m=inet_ntoa(sa);
*/
//create a socket.
SOCKET s;
s=::socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
{
ERet=::WSACleanup();
::MessageBox(NULL,"socket Error","WARING",MB_OK);
return FALSE;
}
//connect the smtp server.
struct sockaddr_in sock;
memset(&sock,0,sizeof(sock));
sock.sin_family=AF_INET;
sock.sin_addr.S_un.S_addr=*(long*)host->h_addr_list[0];
sock.sin_port=htons(25);
ERet=connect(s,(struct sockaddr *)&sock,sizeof(sock));
if(ERet==SOCKET_ERROR)
{
ERet=::closesocket(s);
ERet=::WSACleanup();
::MessageBox(NULL,"connect Error","WARING",MB_OK);
return FALSE;
}
//get the server 220
ERet=recv(s,queque,256,0);
if(ERet==SOCKET_ERROR)
{
ERet=::closesocket(s);
ERet=::WSACleanup();
::MessageBox(NULL,"recv Error","WARING",MB_OK);
return FALSE;
}
queque[3]='\0';
if(strcmp(queque,"220"))
{
ERet=::closesocket(s);
ERet=::WSACleanup();
::MessageBox(NULL,"220 Error","WARING",MB_OK);
return FALSE;
}
//send HELO to the server.
sprintf(queque,"EHLO fangguicheng\r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 250
ERet=recv(s,queque,256,0);
/*
//send MAIL
sprintf(queque,"MAIL \r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 250
ERet=recv(s,queque,256,0);
*/
//send MAIL FROM:<>
sprintf(queque,"MAIL FROM: <fangguicheng@163.net>\r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 250
ERet=recv(s,queque,256,0);
/* //send RCPT TO:<>
sprintf(queque,"RCPT TO: <fangguicheng@163.net>\r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 250
ERet=recv(s,queque,256,0);
//send RCPT TO:<>
sprintf(queque,"RCPT TO: <fangguicheng@21cn.com>\r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 250
ERet=recv(s,queque,256,0);
*/
//send RCPT TO:<>
sprintf(queque,"RCPT TO:<fangguicheng@163.net>\r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 250
ERet=recv(s,queque,256,0);
//send DATA
sprintf(queque,"DATA \r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 354
ERet=recv(s,queque,256,0);
//send the mail body.
char temp[80];
sprintf(temp,"Subject: Test\r\n");
strcpy(queque,temp);
sprintf(temp,"\r\n");
strcat(queque,temp);
sprintf(temp,"fjas方桂成发的信件kfllThis is the text.");
strcat(queque,temp);
sprintf(temp,"\r\n.\r\n");
strcat(queque,temp);
ERet=::send(s,queque,strlen(queque),0);
//get 250
ERet=recv(s,queque,256,0);
//send QUIT
strcpy(queque,"QUIT \r\n");
ERet=::send(s,queque,strlen(queque),0);
//get 221
ERet=recv(s,queque,256,0);
ERet=::closesocket(s);
ERet=::WSACleanup();
return ERet;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -