实验四发送邮件
1、实验目的:
要求学生掌握Socket编程中流套接字的技术,以及邮件的发送
2、实验内容:
i. 要求学生掌握利用Socket进行编程的技术
ii. 不能采用现有的工具,必须自己一步一步,根据协议进行操作
iii. 要求每一次操作,必须点击下一步才能继续
iv. 了解邮件发送格式
v. 必须采用图形界面,可以编辑发送内容
vi. 可选,建立自己的邮件服务器
vii. 发送邮件可以发给自己的邮件服务器,也可以发给已知邮件服务器
viii. 要求可以查看得到发送的邮件
可以给外网服务器发送邮件,也可以给自己的服务器发送邮件,详细请到 http://download.csdn.net/detail/qq_20916555/9493896 下载源代码,查看readme文档,使用。
下面仅仅粘贴核心代码,如有疑惑请在该博文下留言,博主会第一时间回复您。
客户端部分核心代码:
#include "stdafx.h"
#include <windows.h>
#include <WinSock.h>
#include "CMailMessage.h"
int CMailMessage::WSASTARTUP_FAIL = 1;
int CMailMessage::VERSION_ERROR = 2;
int CMailMessage::INIT_OK = 3;
int CMailMessage::INVALID_MSOCKET = 4;
int CMailMessage::CONECTION_FAIL = 5;
int CMailMessage::CONECTION_SUCCESSFULLY = 6;
int CMailMessage::SENDHELLO_ERROR = 7;
int CMailMessage::SENDHELLO_SUCCESS = 8;
int CMailMessage::AUTHLOGIN_FAIL = 9;
int CMailMessage::AUTHLOGIN_SUCCESS = 10;
CMailMessage::CMailMessage()
{
}
CMailMessage::~CMailMessage()
{
}
void CMailMessage::QuitSendMail()
{
char quitstr[20]={0};
sprintf(quitstr,"%s\r\n", "QUIT");
send(msocket, quitstr, strlen(quitstr), 0);
memset(buff, 0, sizeof(buff));
recv(msocket,buff,strlen(buff),0);
}
void CMailMessage::SendMailContent(char *content)
{
int buffsize = strlen(content);
char *content_buff = new char[buffsize+1];
sprintf(content_buff,"%s\r\n.\r\n",content);
send(msocket, content_buff, strlen(content_buff), 0);
memset(buff,0,sizeof(buff));
recv(msocket,buff,sizeof(buff),0);
}
void CMailMessage::SendDataAndHeader(char *from,char *to,char *subject)
{
char dataorheader[128] = {0};
memset(dataorheader,0,sizeof(dataorheader));
sprintf(dataorheader,"%s\r\n","DATA");
send(msocket,dataorheader,strlen(dataorheader),0); //send command of DATA
memset(dataorheader,0,sizeof(dataorheader));
sprintf(dataorheader,"FROM:%s\r\n",from); //send the header: FROM
send(msocket,dataorheader,strlen(dataorheader),0)