Visual C++网络编程经典案例详解 第7章 邮件收发器 SMTP会话过程 smtp命令 构造邮件示例程序 邮件发送代码

在vc在编写代码发送邮件

BOOL CMyEMAIL::OnInitDialog()
{

	...//省略部分代码
	char recvbuff[3]={0};//定义接收缓冲区
	sockaddr_in addr;//定义网络地址结构对象
	addr.sin_family=AF_INET;//为地址结构中的成员赋值
	addr.sin_port=htons(25);
		host=gethostbyname("mail.163.com");//从服务器名获取主机地址
	addr.sin_addr.S_un.S_addr=inet_addr(host->h_addr_list[0]);
	//设置smtp服务器的地址
	
	s=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);//创建套接字
		if(connect(s,(sockaddr*)&addr,sizeof(addr)))//连接SMTP服务器
			{
				recv(s,(LPSTR)recvbuff,3,0);//接收响应码前三位数字
				if(recvbuff[0]==220)//提示用户服务器就绪
				{
					CString data="Data: Tue,04 Feb 2009 21:18:03+0800\r\n";
					CString from="MAIL FROM:lymlrl@163.com\r\n";
					CString reply="Reply-to: lymlrl@sina.com.cn\r\n";
					CString send=" Sender: lymlrl@126.com, wexs@163.com,wen@126.com,wuy@sina.
					com.cn\r\n";
					CString to=" RCPT TO:lymlrl@126.com,data@yahoo.com.cn,ssj@sina.com.cn\r\n";
					CString subject=" Subject: 新年快乐! ";
					CString text="祝大家新年快乐! \r\n";
					text+="程序员俱乐部 lymlrl\r\n";
					char sendmessage[]={data.GetBuffer(1),
						from.GetBuffer(1),reply.GetBuffer(1),
						send.GetBuffer(1),to.GetBuffer(1),
							"DATA\r\n",subject.GetBuffer(1),
								Text.Getbuffer(1),"QUIT\r\n","\0"}
					send(s,&sendmessage,sizeof(sendmessage),0);
					MessageBox("邮件发送成功! ");
				}
			}
}

上面的代码中
首先使用套接字连接SMTP服务器
连接成功后
调用函数接收服务器的响应
如果响应码为220
则表示服务器准备就绪
可以发送邮件到服务器

接着客户端构造邮件内容
在向服务器发送邮件实际内容之前
应首先发送"DATA\r\n"通知服务器准备接收数据
邮件内容发送完毕以后还需要向服务器发送"QUIT\r\n"
表示结束会话

注意:在构造邮件时,在每句字段完成后均加上"\r\n"
并且在整个邮件构造完毕以后需要加上字符"\0"
表示发送的数据结束

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值