2020.12.4 第18课 C++smtp邮件发送
01_准备动作
#pragma once //实现和声明都在同一个头文件hpp
#include <string>
#include <iostream>
using namespace std;
class Base64
{
public:
static char ConvertToBase64(char uc)
{
if (uc < 26)
{
return 'A' + uc;
}
if (uc < 52)
{
return 'a' + (uc - 26);
}
if (uc < 62)
{
return '0' + (uc - 52);
}
if (uc == 62)
{
return '+';
}
return '/';
}
/*
* ToConvert 待转换的字符串
* 返回值:返回转换后的字符串
*/
static string EncodeBase64(string ToConvert)
{
string res;
//通过[]操作string需要预先分配内存,不然会越界
res.resize(ToConvert.size() + ToConvert.size() / 2);
struct Base64Date6* ddd = NULL;
int i = 0;
char* pstr = &ToConvert[0]; //指向待转换的字符串
int len = ToConvert.size();
char* tmp = NULL;
char cc = '\0';
for (i = 1; i <= len / 3; i++)
{
tmp = pstr + (i - 1) * 3;
cc = tmp[2];
tmp[2] = tmp[0];
tmp[0] = cc;
ddd = (struct Base64Date6*)tmp;
res[(i - 1) * 4 + 0] = ConvertToBase64((unsigned int)ddd->d1);
res[(i - 1) * 4 + 1] = ConvertToBase64((unsigned int)ddd->d2);
res[(i - 1) * 4 + 2] = ConvertToBase64((unsigned int)ddd->d3);
res[(i - 1) * 4 + 3] = ConvertToBase64((unsigned int)ddd->d4);
}
if (len % 3 == 1)
{
tmp = pstr + (i - 1) * 3;