请问我这个程序怎么不能生成DLL啊
// WoodSMTP.h: interface for the CWoodSMTP class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_WOODSMTP_H__D9FEEB39_5D27_4FA4_8C55_1C5BABA9E47C__INCLUDED_)
#define AFX_WOODSMTP_H__D9FEEB39_5D27_4FA4_8C55_1C5BABA9E47C__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef RESPONSE_LEN
#define RESPONSE_LEN 1024
#endif
#ifndef HEARD_LEN
#define HEARD_LEN 200
#endif
#ifndef MAIL_LEN
#define MAIL_LEN 2000
#endif
#ifndef TIME_OUT
#define TIME_OUT 2000
#endif
typedef struct MAILSERVER
{
char HOST[50];
char USER[50];
char PSW[50];
int socket;
}STRUCT_HOST;
const int BASE64_MAXLINE = 76;
const char EOL[] = "\r\n";
const char BASE64_TAB[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz0123456789+/";
class CWoodSMTP
{
public:
CWoodSMTP();
virtual ~CWoodSMTP();
BOOL ConnectHost(char *szHost,char *szUser,char *szPsw);
BOOL SendTXT(char *szFrom,char *szRcpt,char *szContent);
BOOL SendMail(char *szFrom,char **szRcpt,char *szSubject,char *szContent);
static int ANSIToBase64(const char *szInANSI, int nInLen, char *szOutBase64, int nOutLen);
public:
STRUCT_HOST *mail_host;
};
#endif // !defined(AFX_WOODSMTP_H__D9FEEB39_5D27_4FA4_8C55_1C5BABA9E47C__INCLUDED_)
// WoodSMTP.cpp: implementation of the CWoodSMTP class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "WoodSMTP.h"
#include <iostream.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CWoodSMTP::CWoodSMTP()
{
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
mail_host = new STRUCT_HOST;
}
CWoodSMTP::~CWoodSMTP()
{
delete mail_host;
}
BOOL CWoodSMTP::ConnectHost(char *szHost,char *szUser,char *szPsw)
{
int SockFD;
struct sockaddr_in ServAddr;
char HEADER[HEARD_LEN]="";
LPHOSTENT pHost = gethostbyname(szHost);
SockFD = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
ServAddr.sin_family = AF_INET;
ServAddr.sin_addr.s_addr = *(ULONG *)pHost->h_addr_list[0];
ServAddr.sin_port = htons(25);//smtp 25
if(connect(SockFD, (struct sockaddr *)&ServAddr, sizeof(ServAddr))==SOCKET_ERROR)
{
return false;
}
strcat(HEADER,"HELO LOCALHOST");
strcat(HEADER,EOL);
strcat(HEADER,"AUTH LOGIN");
strcat(HEADER,EOL);
char Base64USER[100];
ANSIToBase64(szUser,strlen(szUser),Base64USER,0x555556);
strcat(HEADER,Base64USER);
char Base64PSW[100];
ANSIToBase64(szPsw,strlen(szPsw),Base64PSW,0x555556);
strcat(HEADER,Base64PSW);
if(send(SockFD,HEADER,strlen(HEADER),0)==SOCKET_ERROR)
{
return false;
}
Sleep(TIME_OUT);
char response_buf[RESPONSE_LEN];
int buf_len = recv(SockFD,response_buf,RESPONSE_LEN,0);
response_buf[buf_len] = '\0';
if(strstr(response_buf,"235")==NULL)
{
return false;
}
strcpy(mail_host->HOST,szHost);
strcpy(mail_host->USER,szUser);
strcpy(mail_host->PSW,szPsw);
mail_host->socket=SockFD;
return true;
}
BOOL CWoodSMTP::SendMail(char *szFrom,char **szRcpt,char *szSubject,char *szContent)
{
return 0;
}
BOOL CWoodSMTP::SendTXT(char *szFrom,char *szRcpt,char *szContent)
{
char TXT_MAIL[MAIL_LEN]="";
strcat(TXT_MAIL,"MAIL FROM: <");
strcat(TXT_MAIL,szFrom);
strcat(TXT_MAIL,">");
strcat(TXT_MAIL,EOL);
strcat(TXT_MAIL,"RCPT TO: <");
strcat(TXT_MAIL,szRcpt);
strcat(TXT_MAIL,">");
strcat(TXT_MAIL,EOL);
strcat(TXT_MAIL,"DATA");
strcat(TXT_MAIL,EOL);
strcat(TXT_MAIL,"X-WOODINF:");
strcat(TXT_MAIL,szContent);
strcat(TXT_MAIL,"X-WOODINF-END");
strcat(TXT_MAIL,EOL);
strcat(TXT_MAIL,".");
strcat(TXT_MAIL,EOL);
if(send(mail_host->socket,TXT_MAIL,strlen(TXT_MAIL),0)==SOCKET_ERROR)
{
return false;
}
Sleep(100);
char response_buf[RESPONSE_LEN];
int buf_len = recv(mail_host->socket,response_buf,RESPONSE_LEN,0);
response_buf[buf_len] = '\0';
//AfxMessageBox(response_buf);
if(strstr(response_buf,"250")==NULL)
{
return false;
}
return true;
}
int CWoodSMTP::ANSIToBase64(const char *szInANSI, int nInLen, char *szOutBase64, int nOutLen)
{
{
//Input Parameter validation
if ((szInANSI == NULL) || (nInLen == 0) || (szOutBase64 == NULL) || (nOutLen == 0))
return 0;
if (nOutLen < (nInLen*4/3 + 1 + nInLen*4/3/BASE64_MAXLINE*2 + 1 + 4))
return 0;
//Set up the parameters prior to the main encoding loop
int nInPos = 0;
int nOutPos = 0;
int nLineLen = 0;
int c1, c2, c3;
int i;
// Get three characters at a time from the input buffer and encode them
for (i=0; i<nInLen/3; ++i)
{
//Get the next 2 characters
c1 = szInANSI[nInPos++] & 0xFF;
c2 = szInANSI[nInPos++] & 0xFF;
c3 = szInANSI[nInPos++] & 0xFF;
//Encode into the 4 6 bit characters
szOutBase64[nOutPos++] = BASE64_TAB[c1 >> 2];
szOutBase64[nOutPos++] = BASE64_TAB[((c1 << 4) | (c2 >> 4)) & 0x3F];
szOutBase64[nOutPos++] = BASE64_TAB[((c2 << 2) | (c3 >> 6)) & 0x3F];
szOutBase64[nOutPos++] = BASE64_TAB[c3 & 0x3F];
nLineLen += 4;
//Handle the case where we have gone over the max line boundary
if (nLineLen > BASE64_MAXLINE - 4)
{
szOutBase64[nOutPos++] = EOL[0];
szOutBase64[nOutPos++] = EOL[1];
nLineLen = 0;
}
}
// Encode the remaining one or two characters in the input buffer
switch (nInLen % 3)
{
case 0:
{
szOutBase64[nOutPos++] = EOL[0];
szOutBase64[nOutPos++] = EOL[1];
break;
}
case 1:
{
c1 = szInANSI[nInPos] & 0xFF;
szOutBase64[nOutPos++] = BASE64_TAB[(c1 & 0xFC) >> 2];
szOutBase64[nOutPos++] = BASE64_TAB[((c1 & 0x03) << 4)];
szOutBase64[nOutPos++] = '=';
szOutBase64[nOutPos++] = '=';
szOutBase64[nOutPos++] = EOL[0];
szOutBase64[nOutPos++] = EOL[1];
break;
}
case 2:
{
c1 = szInANSI[nInPos++] & 0xFF;
c2 = szInANSI[nInPos] & 0xFF;
szOutBase64[nOutPos++] = BASE64_TAB[(c1 & 0xFC) >> 2];
szOutBase64[nOutPos++] = BASE64_TAB[((c1 & 0x03) << 4) | ((c2 & 0xF0) >> 4)];
szOutBase64[nOutPos++] = BASE64_TAB[((c2 & 0x0F) << 2)];
szOutBase64[nOutPos++] = '=';
szOutBase64[nOutPos++] = EOL[0];
szOutBase64[nOutPos++] = EOL[1];
break;
}
default:
{
return 0;
}
}
szOutBase64[nOutPos] = 0;
return nOutPos;
}
}