• 大小: 1.74MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-13
  • 语言: C/C++
  • 标签: c++  smtp  邮件  ssl  tls  

资源简介

c++ smpt发送邮件类 ssl/tls 比较好用 转自codeproject

资源截图

代码片段和文件信息

/* 
   base64.cpp and base64.h

   Copyright (C) 2004-2008 Ren?Nyffenegger

   This source code is provided ‘as-is‘ without any express or implied
   warranty. In no event will the author be held liable for any damages
   arising from the use of this software.

   Permission is granted to anyone to use this software for any purpose
   including commercial applications and to alter it and redistribute it
   freely subject to the following restrictions:

   1. The origin of this source code must not be misrepresented; you must not
      claim that you wrote the original source code. If you use this source code
      in a product an acknowledgment in the product documentation would be
      appreciated but is not required.

   2. Altered source versions must be plainly marked as such and must not be
      misrepresented as being the original source code.

   3. This notice may not be removed or altered from any source distribution.

   Ren?Nyffenegger rene.nyffenegger@adp-gmbh.ch

*/

#include “base64.h“
#include 

static const std::string base64_chars = 
             “ABCDEFGHIJKLMNOPQRSTUVWXYZ“
             “abcdefghijklmnopqrstuvwxyz“
             “0123456789+/“;


static inline bool is_base64(unsigned char c) 
{
  return (isalnum(c) || (c == ‘+‘) || (c == ‘/‘));
}

std::string base64_encode(unsigned char const* bytes_to_encode unsigned int in_len) 
{
  std::string ret;
  int i = 0 j = 0;
  unsigned char char_array_3[3] char_array_4[4];

  while (in_len--)
{
    char_array_3[i++] = *(bytes_to_encode++);
    if (i == 3) 
{
      char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
      char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
      char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
      char_array_4[3] = char_array_3[2] & 0x3f;

      for(i = 0; (i <4) ; i++)
        ret += base64_chars[char_array_4[i]];
      i = 0;
    }
  }

  if (i)
  {
    for(j = i; j < 3; j++)
      char_array_3[j] = ‘\0‘;

    char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;
    char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);
    char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6);
    char_array_4[3] = char_array_3[2] & 0x3f;

    for (j = 0; (j < i + 1); j++)
      ret += base64_chars[char_array_4[j]];

    while((i++ < 3))
      ret += ‘=‘;

  }

  return ret;

}

std::string base64_decode(std::string const& encoded_string) 
{
  int in_len = encoded_string.size();
  int i = 0 j = 0 in_ = 0;
  unsigned char char_array_4[4] char_array_3[3];
  std::string ret;

  while (in_len-- && ( encoded_string[in_] != ‘=‘) && is_base64(encoded_string[in_])) 
{
    char_array_4[i++] = encoded_string[in_]; in_++;
    if (i ==4) {
      for (i = 0; i <4; i++)
        char_array_4[i] = base64_chars.find(char_array_4[i]);

 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        9195  2011-06-23 07:42  CSmtp_v2_1_ssl\Article Source.htm
     文件        3844  2008-08-18 13:23  CSmtp_v2_1_ssl\base64.cpp
     文件         190  2008-07-18 19:30  CSmtp_v2_1_ssl\base64.h
     文件       72094  2012-11-06 06:20  CSmtp_v2_1_ssl\CSmtp.cpp
     文件        7142  2012-11-03 22:27  CSmtp_v2_1_ssl\CSmtp.h
     文件         874  2010-08-09 12:32  CSmtp_v2_1_ssl\CSmtp.sln
     文件        6477  2010-08-20 19:26  CSmtp_v2_1_ssl\CSmtp.vcproj
     文件        1652  2012-11-03 22:20  CSmtp_v2_1_ssl\main.cpp
     文件       13660  2012-11-03 20:00  CSmtp_v2_1_ssl\md5.cpp
     文件        4441  2010-08-14 20:57  CSmtp_v2_1_ssl\md5.h
     文件        5682  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\aes.h
     文件       48773  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\asn1.h
     文件       18956  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\asn1_mac.h
     文件       28073  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\asn1t.h
     文件       30822  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\bio.h
     文件        5173  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\blowfish.h
     文件       33562  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\bn.h
     文件        4565  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\buffer.h
     文件        4453  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\cast.h
     文件        1978  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\comp.h
     文件        9484  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\conf.h
     文件        4080  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\conf_api.h
     文件       24217  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\crypto.h
     文件       10736  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\des.h
     文件       18238  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\des_old.h
     文件        8654  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\dh.h
     文件       11674  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\dsa.h
     文件       16252  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\dso.h
     文件        6323  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\dtls1.h
     文件        9632  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\e_os2.h
     文件         540  2010-01-08 10:59  CSmtp_v2_1_ssl\openssl-0.9.8l\inc32\openssl\ebcdic.h
............此处省略50个文件信息

评论

共有 条评论