收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。


需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
C++实现发送邮件
一下内容参考自 邮件正文及其附件的发送的C++实现,并添加了多个邮件接收者的功能
Smtp.h
#ifndef \_\_SMTP\_H\_\_ //避免重复包含
#define \_\_SMTP\_H\_\_
#include <list>
#include <WinSock2.h>
#include <iostream>
#include <fstream>
#include <string>
#include <sstream>
const int MAXLEN = 1024;
const int MAX_FILE_LEN = 6000;
static const char base64Char[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
struct FILEINFO /\*用来记录文件的一些信息\*/
{
char fileName[128]; /\*文件名称\*/
char filePath[256]; /\*文件绝对路径\*/
};
class CSmtp
{
public:
CSmtp(void);
CSmtp(
int port,
std::string srvDomain, //smtp服务器域名
std::string userName, //用户名
std::string password, //密码
std::string targetEmail, //目的邮件地址
std::string emailTitle, //主题
std::string content //内容
);
public:
~CSmtp(void);
public:
int port;
public:
std::string domain;
std::string user;
std::string pass;
std::string targetAddr;
std::string title;
std::string content;
/\*为了方便添加文件,删除文件神马的,使用list容器最为方便,相信大家在数据结构里面都学过\*/
std::list <FILEINFO \*> listFile;
public:
char buff[MAXLEN + 1];
int buffLen;
SOCKET sockClient; //客户端的套接字
public:
bool CreateConn(); /\*创建连接\*/
bool Send(std::string &message);
bool Recv();
void FormatEmailHead(std::string &email);//格式化要发送的邮件头部
int Login();
bool SendEmailHead(); //发送邮件头部信息
bool SendTextBody(); //发送文本信息
//bool SendAttachment(); //发送附件
int SendAttachment_Ex();
**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**


**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**
**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**


被折叠的 条评论
为什么被折叠?



