C++发送邮件客户端源码


这是一个由老外写的比较新的发送邮件的项目CSmtp,使用VS2008编译,经测试,常用的163、QQ、126、sohu、outlook都支持,唯独163发送到QQ会失败
资源截图
代码片段和文件信息
/* 
   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] = ‘‘;

    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]);

 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-13 16:47  CSmtp_v2.4
     文件       17536  2013-08-17 11:22  CSmtp_v2.4Article Source.htm
     文件        3844  2008-08-18 14:23  CSmtp_v2.4ase64.cpp
     文件         190  2008-07-18 20:30  CSmtp_v2.4ase64.h
     文件       76597  2015-10-22 21:28  CSmtp_v2.4CSmtp.cpp
     文件        7298  2015-10-22 20:47  CSmtp_v2.4CSmtp.h
     文件         875  2018-08-13 16:46  CSmtp_v2.4CSmtp.sln
     文件        6541  2018-08-13 16:46  CSmtp_v2.4CSmtp.vcproj
     文件        1652  2012-11-03 23:20  CSmtp_v2.4main.cpp
     文件       13673  2013-03-08 23:47  CSmtp_v2.4md5.cpp
     文件        4441  2010-08-14 21:57  CSmtp_v2.4md5.h
     目录           0  2013-07-10 22:31  CSmtp_v2.4openssl-0.9.8l
     目录           0  2013-07-10 22:31  CSmtp_v2.4openssl-0.9.8linc32
     目录           0  2013-07-10 22:31  CSmtp_v2.4openssl-0.9.8linc32openssl
     文件        5682  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslaes.h
     文件       48773  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslasn1.h
     文件       28073  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslasn1t.h
     文件       18956  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslasn1_mac.h
     文件       30822  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslio.h
     文件        5173  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32openssllowfish.h
     文件       33562  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32openssln.h
     文件        4565  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32openssluffer.h
     文件        4453  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslcast.h
     文件        1978  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslcomp.h
     文件        9484  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslconf.h
     文件        4080  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslconf_api.h
     文件       24217  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32opensslcrypto.h
     文件       10736  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32openssldes.h
     文件       18238  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32openssldes_old.h
     文件        8654  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32openssldh.h
     文件       11674  2010-01-08 11:59  CSmtp_v2.4openssl-0.9.8linc32openssldsa.h
............此处省略55个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)