我用C 语言实现了连接126邮件服务器发送邮件,网上有很多例子,我下了,没有一个能运行起来的,这个是用netbean测试,没有问题了,下面是我的代码(要改三处地方:用户名\密码\发送邮件):
#include <stdio.h>
#include <winsock2.h>
#include <stdlib.h>
#include <string.h>
//#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("smtp.126.com", 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(theSocket, "AUTH LOGIN \r\n", sizeof("AUTH LOGIN \r\n"), 0);
nRet = recv(theSocket, szBuf, sizeof(szBuf), 0); printf("\nData received LOGIN: %s", szBuf);
//发送用户名和密码,这里的用户名和密码必须用base64进行转码,发送转码以后的字符串
nRet = send(theSocket,"用户名\r\n", strlen("用户名\r\n"),0);
nRet = recv(theSocket, szBuf, sizeof(szBuf),0);printf("\nData receivedUSERNAME: %s", szBuf);
//发送用户密码
nRet = send(theSocket,"密码\r\n", strlen("密码\r\n"), 0);
nRet = recv(theSocket, szBuf, sizeof(szBuf),0); printf("\nData receivedUSERPASSWORD: %s", szBuf);
//发送[发送邮件]的信箱(改成你的邮箱!)
send(theSocket,"MAIL FROM:<geniues@126.com>\r\n",sizeof("MAIL FROM:<geniues@126.com>\r\n"),0);
nRet = recv(theSocket, szBuf, sizeof(szBuf)+1, 0);printf("\nData received MAILFROM: %s", szBuf);
//发送[接收邮件]的邮箱
nRet= send(theSocket,"RCPT TO:<geniues@qq.com> \r\n",sizeof("RCPT TO:<geniues@qq.com> \r\n"),0);
nRet = recv(theSocket, szBuf, sizeof(szBuf)+1, 0); printf("\nData received TOMAIL: %s", szBuf);
char MailData[1024] =
"From: \"geniues@126.com\"\r\n"
"To: maxinliang002@126.com\r\n"
"Subject: IP Address\r\n\r\n"; //主题可以改成别的
//各诉邮件服务器,准备发送邮件内容
send(theSocket,"DATA\r\n", strlen("DATA\r\n"),0);
nRet = recv(theSocket, szBuf, sizeof(szBuf)+1, 0); printf("\nData receivedSEND DATA: %s", szBuf);
//发送邮件标题
send(theSocket,MailData, strlen(MailData),0);
//发送邮件内容
send(theSocket,"邮件内容来了!\r\n", strlen("邮件内容来了!\r\n"),0);
//发送邮件结束
send(theSocket,"\r\n.\r\n", strlen("\r\n.\r\n"),0);
//接收邮件服务器返回信息
nRet = recv(theSocket,szBuf,sizeof(szBuf)+1,0); printf("\nData received OVER DATA: %s", szBuf);
//
// Display the received data
//
//printf("\nData received3: %s", szBuf);
closesocket(theSocket);
return;
}
分享到:
相关推荐
C语言实现的电子邮件发送!
用MAPI 发送电子邮件 正文内容和附件。 运行程序前,注意要配置outlookExpress. 具体配置,请参考http://www.bcty365.com/looksetupstudy.php?id=474
linux下用C语言实现发送电子邮件,读取电子邮件内容
c语言发送邮件及附件 注释详细。
电子邮件发送和接受程序的开发 vc++mfc编程案例 课程设计
实现电子邮件的接受和发送,并且在发送和接受过程中可以进行加密和解密.zip
《C语言课程设计案例精编》光盘内容及...关于本书的相关技术支持和软件问题请发电子邮件到bookforc@163.com寻求帮助。 7. 作者信息 作者(技术支持及相关问题探讨) 姓 名:刘勇、姜灵芝 电子邮件:bookforc@163.com
《C语言课程设计案例精编》光盘内容及...关于本书的相关技术支持和软件问题请发电子邮件到bookforc@163.com寻求帮助。 7. 作者信息 作者(技术支持及相关问题探讨) 姓 名:刘勇、姜灵芝 电子邮件:bookforc@163.com
感谢您为手指警报,静态表格捐赠,通过SMS GATEWAY发送电子邮件或... 轻量级代码,附带源文件,用C编写,电子邮件警告发送者,ANDROID ping,SPARC,AMD64,traceroute,DETECT SOURCE Downs,通过电子邮件警告,C语言
而我个人主要负责电子邮件的发送这个功能。 二.编程环境选择 语言选择:Visual Stdio 2003中的C#(C Sharp) 操作系统选择: WindowsXP系统 C#语言,作为微软官方主推语言,拥有和VB一样的对于开发界面窗体的便利,...
基本练习 开始练习C语言编程的小组练习。 该库对开始学习C的每个人都将有用。存在不同级别的不同练习,最接近1的数字。... 如果您对存储库有任何疑问,请随时与我联系,向该电子邮件发送电子邮件: 。
本软件是一款用vc写的局域网即时通讯系统,主要功能有文本聊天、文件传输、音频聊天、信使服务以及在internet下的发送和接受电子邮件等...
MinForth V3.4是具有命令行界面的经典Forth系统。 开发资源需求最少。 一个源文本编辑器和一个C编译器就足够了。 通过设计,不需要工具链即可适应或重建...forum/comp.lang.forth-发送电子邮件至minforth@gmx.net
迷你游戏机用于Basys板的C语言实现的迷你游戏系统 :joystick: :electric_plug: (2018) 游戏共有两种模式,一种是向用户显示事实或不正确的陈述,然后他们必须猜测是对...接触电子邮件: 领英(LinkedIn): 网站: :
主要是用C语言来描述,有不足的请发电子邮件给我lirongfan@yahoo.cn
我们可以用A-Lock来加密文本内容的电子邮件,使用它加密后的邮件可以避免第三者偷阅,就算我们在发邮件的时候填错了收件人的地址,将邮件发到了陌生人的手中,那么对方看到的也只是一堆乱码,而无法辨认邮件的具体...
我们可以用A-Lock来加密文本内容的电子邮件,使用它加密后的邮件可以避免第三者偷阅,就算我们在发邮件的时候填错了收件人的地址,将邮件发到了陌生人的手中,那么对方看到的也只是一堆乱码,而无法辨认邮件的具体...
通过发送电子邮件至进行订阅。 建造 protobuf-c需要安装C编译器,C ++编译器和pkg-config 。 ./configure && make && make install 如果通过git checkout进行构建,则还必须安装autotools ( autoconf , automake ...
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2010入门经典(第5版)》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2010...
SDL_gpu,用于简化硬件加速2D图形的库。 乔纳森·迪尔伯恩(Jonathan Dearborn) SDL_gpu是根据MIT许可条款获得许可的。 有关此代码授予您的使用许可的... 您可以通过提交拉取请求,填写错误报告,发送电子邮件来帮助