资源简介
博文已经写得很详细了,这个是附带的源代码资源
代码片段和文件信息
/*
*我把代码做成了一个函数,填了用户名和密码还有发送的信息就可以调用了
*填写时直接替换汉字部分就可以了
*/
/*
*这个函数记录日志
*/
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
相关资源
- 数据结构c语言版上机题代码汇总
- c语言编写的计算器 绝对经典
- C语言回文判断
- C语言编写二进制数搜索程序
- 最大相关最小冗余的C语言源码
- 数字水印源代码,C语言程序
- 长整数乘以普通整数c语言代码
- C语言操作netcdf 用法手册
- 8*8点阵模拟电梯仿真
- 用C语言实现的完整B树
- 非抢占式短作业优先进程调度C语言
- 猜数字游戏 c语言实现 猜4位随机生成
- 秘钥管理系统 c语言实现的RSA
- nrf905无线温度收发程序
- C语言实现二叉树的创建、插入、删除
- 数据结构C语言之哈夫曼编码
- 图书管理系统 C语言设计源代码和实验
- 用C语言实现SHA-1算法
- C语言实现拉格朗日插值
- C语言 斗地主 游戏
- Linux下C语言实现的FTP系统
- C语言连接Access数据库
- 常用加密算法AES、RSA、DES、MD5、TEA、
- DES算法加解密实现 C语言
- linux下FTP服务器与客户端的C语言实现
- c语言程序设计案例教程 廖湖声 第二
- 用C语言实现八数码问题的宽度优先搜
- 数据结构表达式求值,c语言版,能计
- c语言井字棋源码
- C语言课程设计_学生选修课系统
评论
共有 条评论