资源简介

博文已经写得很详细了,这个是附带的源代码资源

资源截图

代码片段和文件信息

/*
*我把代码做成了一个函数,填了用户名和密码还有发送的信息就可以调用了
*填写时直接替换汉字部分就可以了
*/

/*
*这个函数记录日志
*/
void WriteLog(char *context)
{
char time[2048] = {0};
SYSTEMTIME st;
GetLocalTime(&st);
sprintf(time“%d-%d-%d %d : %d : %d   %s\n“st.wYearst.wMonthst.wDayst.wHourst.wMinutest.wSecondcontext);
FILE *log ;
log = fopen(“service.log““at“);
if ( NULL == log )
return;
fputs(timelog);
fclose(log);
}
/*
*这个函数是来设置Socket地址的
*/
int SetSocket( SOCKET *pSock sockaddr_in *pTo )
{
hostent *pHostent = NULL; 

pHostent = gethostbyname( “smtp.sina.com“ );
if( NULL == pHostent )

char Temp[80];
sprintf( Temp “Error at gethostbyname: %ld“ WSAGetLastError() );
        WriteLog( Temp );
        return -1;
    } 

*pSock = socket(AF_INETSOCK_STREAM0);
if( INVALID_SOCKET == *pSock )

char Temp[80];
sprintf( Temp “Error at socket(): %ld“ WSAGetLastError() );
        WriteLog( Temp );
return -1;
    } 

pTo->sin_family = AF_INET;
pTo->sin_port = htons(25);
memcpy( &pTo->sin_addr.S_un.S_addr pHostent->h_addr_list[0] pHostent->h_length );
return 0;
}
/*
*这个函数是用来初始化socket库的
*/
int Initwsa(BYTE minorverBYTE majorver)
{
WORD sockversion=MAKEWORD(minorvermajorver);
if (::WSAStartup(sockversion&wsadata)!=0)
{
char err[128];
sprintf(err “[WSAStartup]初始化失败 !错误码 %d“WSAGetLastError());
WriteLog(err);
return -1;
}
return 0;
}

/*
*发送邮件的函数
*/
int SendIP( void )
{
sockaddr_in from to;
SOCKET Sock;
char hostname[255];
int retConnect = 0;
    char Buffer[1024] = {0}; 
char MailData[1024] =
“From: \“改成你的用户名\“\r\n“
“To: 改成目的邮箱地址\r\n“
“Subject: IP Address\r\n\r\n“; //主题可以改成别的

if ( -1 == Initwsa( 2 2 ) )
return -1;
again:
sprintf( MailData “From: \“改成你的用户名\“\r\nTo: 改成目的邮箱地址\r\nSubject: IP Address\r\n\r\n“ );
gethostname( hostname 255 );
hostent *pHost = gethostbyname( hostname );
// Get all the ip address of the server
if ( pHost )
{
int nIndex = 0;
while( pHost->h_addr_list[ nIndex ] )
{
memcpy( &from.sin_addr.S_un.S_addr pHost->h_addr_list[nIndex] pHost->h_length);   
sprintf( Buffer“Host IP:%s\n“ inet_ntoa( from.sin_addr ));
strcat( MailData Buffer);
nIndex++;
}
strcat( MailData “\r\n.\r\n“);
}
if ( -1 == SetSocket( &Sock &to ) ) // 调用SetSocket函数
{
Clear( &Sock );
goto again;
}
if ( SOCKET_ERROR == connect( Sock (sockaddr*)&to sizeof(sockaddr_in) ) ) 
{
char Temp[80];
sprintf( Temp “[connect] failed Error code :%ld“ WSAGetLastError() );
        WriteLog( Temp );
Clear( &Sock );
goto again;
    }
char Temp[80];
sprintf( Temp “Connected to the server %s.“ inet_ntoa(to.sin_addr) );
    WriteLog( Temp );

ZeroMemory(Buffer sizeof(Buffer)); 
    if ( SOCKET_ERROR == recv(Sock Buffer sizeof(Buffer) 0 ) )
{
char Temp[80];
sprintf( Temp “Error at recv() :%ld“ WSAGetLastError() );
        WriteLog( Temp );
Clear( &Sock );
goto aga

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9784  2009-02-15 17:19  socket应用(三) 用C语言编写发送邮件程序.cpp

----------- ---------  ---------- -----  ----

                 9784                    1


评论

共有 条评论