C++实现邮件发送程序在vs测试通过,一共3个文件,发邮件的程序封装为Csmtp 类。
1.测试用的主函数
//
#include "Csmtp.h"
#pragma comment(lib, "Kernel32.lib")
int main()
{
Csmtp mail(
25,
"",
"username@",// 来源邮箱
"pwd",
"username@" //目标邮箱
);
if (!mail.CReateSocket())
{
cout << "ReateSocket failed!" << endl;
return -1;//
}
mail.setTitle("test mail");
mail.setContent("this is content.");
mail.addfile("test1.png"); //添加附件
mail.addfile("test2.png"); //添加附件
mail.SendMail(); //类主函数
return 0;
}
2.Csmtp类定义
#include
#include
#include
#include
#include //适用平台 Windows
#pragma comment(lib, "ws2_32.lib") /*链接ws2_32.lib动态链接库*/
// POP3服务器(端口:110) Csmtp服务器(端口:25)
using namespace std;
class Csmtp
{
int port;
string domain;
string user;
string pass;
string target;
string title; //邮件标题
string content; //邮件内容
HOSTENT* pHostent;
SOCKET sockClient; //客户端的套接字
vector filename; //存储附件名的向量
public:
Csmtp(
int _port, //端口25
string _domain, //域名
string _user, //发送者的邮箱
string _pass, //密码
string _target) //目标邮箱
:port(_port),domain(_domain),user(_user),pass(_pass), target(_target){};//内容
bool CReateSocket();
void setTitle(string tem){title = tem;}
void setContent(string tem){content = tem;}
int SendAttachment(SOCKET &sockClient);
int SendMail();
void addfile(string str){filename.push_back(str);}
};
3. Csmtp 类的实现
#include "Csmtp.h"
//#include //异常类
static const