C 语言实现了连接126邮件服务器发送邮件
我用C 语言实现了连接126邮件服务器发送邮件,网上有很多例子,我下了,没有一个能运行起来的,这个是用netbean测试,没有问题了,下面是我的代码(要改三处地方:用户名\密码\发送邮件):
#include
#include
#include
#include
//#pragma comment(lib,"ws2_32.lib")
// Function prototype
void StreamClient(char *szServer, short nPort, char *szMessage);
// Helper macro for displaying errors
#define PRINTERROR(s) \
fprintf(stderr,"\n%: %d\n", s, WSAGetLastError())
int main(int argc, char **argv)
{
char hostname[255];
WORD wVersionRequested = MAKEWORD(2,0);
WSADATA wsaData;
int nRet;
short nPort;
nPort =25;
nRet = WSAStartup(wVersionRequested, &wsaData);
StreamClient("http://doc.xuehai.net", nPort, "AUTH LOGIN\r\n");
WSACleanup();
return 0;
}
void StreamClient(char *szServer, short nPort, char *szMessage)
{
printf("\nStream Client connecting to server: %s on port: %d",szServer, nPort);
//
// Find the server
//
LPHOSTENT lpHostEntry;
lpHostEntry = gethostbyname(szServer);
if (lpHostEntry == NULL)
{
PRINTERROR("gethostbyname()");
return;
}
//
// Create a TCP/IP stream socket
//
SOCKET theSocket;
theSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (theSocket == INVALID_SOCKET){
PRINTERROR("socket()");
return;
}
//
// Fill in the address structure
//
SOCKADDR_IN saServer;
saServer.sin_family = AF_INET;
saServer.sin_addr = *((LPIN_ADDR)*lpHostEntry->h_addr_list);
saServer.sin_port = htons(nPort);
//
// connect to the server
//
int nRet;
nRet = connect( theSocket, // Socket
(LPSOCKADDR)&saServer, // Server address
sizeof(struct sockaddr));// Length of server address structure
printf("\n%d1lL=====================================%d\n",nRet,SOCKET_ERROR);
if (nRet == SOCKET_ERROR)
{
PRINTERROR("socket()");
closesocket(theSocket);
return;
}
char szBuf[256];
// strcpy(szBuf, "From the Client");
char buf[350]="0";
char server[250];
gethostname(server,250);
strcpy(buf, "HELO ");
strcat(buf, server);
strcat(buf, " \r\n");
printf("%s:::%d",buf,strlen(buf));
//
// Wait for a reply
//
nRet = recv(theSocket,szBuf,sizeof(szBuf)+1,0); printf("\nData received OVER DATA: %s", szBuf);
nRet = send(theSocket, buf, strlen(buf), 0);
nRet = recv(theSocket, szBuf, sizeof(szBuf), 0); printf("\nData received2: %s", szBuf);
//发送准备登陆信息
nRet = send(t
heSocket, "AUTH LOGIN \r\n", sizeof("AUTH LOGIN \r\n"), 0);
nRet = recv(theSocket, szBuf, sizeof(szBuf), 0); printf("