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

代码片段和文件信息
/*
*我把代码做成了一个函数,填了用户名和密码还有发送的信息就可以调用了
*填写时直接替换汉字部分就可以了
*/
/*
*这个函数记录日志
*/
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语言模拟文件管理系统844
- C语言开发实战宝典
- C++中头文件与源文件的作用详解
- C语言代码高亮html输出工具
- 猜数字游戏 c语言代码
- C语言课程设计
- 数字电位器C语言程序
- CCS FFT c语言算法
- 使用C语言编写的病房管理系统
- 通信过程中的RS编译码程序(c语言)
- 计算机二级C语言上机填空,改错,编
- 用回溯法解决八皇后问题C语言实现
- 简易教务管理系统c语言开发文档
- 操作系统课设 读写者问题 c语言实现
- 小波变换算法 c语言版
- C流程图生成器,用C语言代码 生成C语
- 3des加密算法C语言实现
- 简单的C语言点对点聊天程序
- 单片机c语言源程序(51定时器 八个按
- 个人日常财务管理系统(C语言)
- c语言电子商务系统
- 小甲鱼C语言课件 源代码
- 将图片转换为C语言数组的程序
- C语言实现的一个内存泄漏检测程序
- DES加密算法C语言实现
- LINUX下命令行界面的C语言细胞游戏
- 用单片机控制蜂鸣器播放旋律程序(
- 学校超市选址问题(数据结构C语言版
- 电子时钟 有C语言程序,PROTEUS仿真图
- 尚观培训linux许巍老师关于c语言的课
评论
共有 条评论