• 大小: 13.35MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-15
  • 语言: C/C++
  • 标签: 代码  

资源简介

MFC邮件客户端(支持收发邮件)

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “base64.h“

// 静态成员初始化7-bit 字母表.
CString Cbase64::m_sbase64Alphabet = 
_T( “ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/“ );

Cbase64::Cbase64(void)
{
}


Cbase64::~Cbase64(void)
{
}

//---------------------------------------------------------------------------
CString Cbase64::Encode(LPCTSTR szEncodingint nSize)
{
CString sOutput = _T( ““ );
int nNumBits;
UINT nDigit;
int lp = 0;

if( szEncoding == NULL )
return sOutput;

m_szInput = szEncoding;
m_nInputSize = nSize;

m_nBitsRemaining = 0;
nDigit = ReadBits(&nNumBits lp );
while( nNumBits > 0 )
{
sOutput += m_sbase64Alphabet[ (int)nDigit ];
nDigit = ReadBits(&nNumBits lp );
}

while( sOutput.GetLength() % 4 != 0 )
{
sOutput += ‘=‘;
}
return sOutput;
}

//---------------------------------------------------------------------------
// 输出缓冲区大小不小于 3/4 输入缓冲区大小. 为了简便它们的大小取为一致.
int Cbase64::Decode(LPCTSTR szDecoding LPTSTR szOutput)
{
    int c lp =0;
int i;
int nDigit;
    int nDecode[ 256 ];

ASSERT( szDecoding != NULL );
ASSERT( szOutput != NULL );
if( szOutput == NULL )  
return 0;

if( szDecoding == NULL )
return 0;

CString sInput = szDecoding;
if( sInput.GetLength() == 0 )
return 0;

// 建立解码表.
for( int i = 0; i < 256; i++ ) 
nDecode[i] = -2; // 非法数字.
for(i=0; i < 64; i++ )
{
nDecode[ m_sbase64Alphabet[ i ] ] = i;
nDecode[ m_sbase64Alphabet[ i ] | 0x80 ] = i; // 忽略8th bit.
nDecode[ ‘=‘ ] = -1; 
nDecode[ ‘=‘ | 0x80 ] = -1; 
    }

// 清除输出缓冲区.
memset( szOutput 0 sInput.GetLength() + 1 );

// 对输入数据进行解码.
for( lp = 0 i = 0; lp < sInput.GetLength(); lp++ )
{
c = sInput[ lp ];
nDigit = nDecode[ c & 0x7F ];
if( nDigit < -1 ) 
{
return 0;

else if( nDigit >= 0 ) 
WriteBits( nDigit & 0x3F szOutput i );
    }
return i;
}

//---------------------------------------------------------------------------
UINT Cbase64::ReadBits(int * pBitsRead int& lp)
{
    ULONG lScratch;
    while( ( m_nBitsRemaining < 6 ) && 
   ( lp < m_nInputSize ) ) 
{
int c = m_szInput[ lp++ ];
        m_lBitStorage <<= 8;
        m_lBitStorage |= (c & 0xff);
m_nBitsRemaining += 8;
    }

    if( m_nBitsRemaining < 6 ) 
{
lScratch = m_lBitStorage << ( 6 - m_nBitsRemaining );
*pBitsRead = m_nBitsRemaining;
m_nBitsRemaining = 0;
    } 
else 
{
lScratch = m_lBitStorage >> ( m_nBitsRemaining - 6 );
*pBitsRead = 6;
m_nBitsRemaining -= 6;
    }

    return (UINT)lScratch & 0x3F;
}

//---------------------------------------------------------------------------
void Cbase64::WriteBits(UINT nBits LPTSTR szOutput int& i)
{
UINT nScratch;

m_lBitStorage = (m_lBitStorage << 6) | nBits;
m_nBitsRemaining += 6;
while( m_nBitsRemaining > 7 ) 
{
nScratch = m_lBitStorage >> (m_nBitsRemaining - 8);
szOutput[ i++ ] = nScratch & 0xFF;
m_nBitsRemaining -= 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2013-10-25 10:50  MailClient\
     目录           0  2013-10-25 10:50  MailClient\Debug\
     文件      219136  2013-10-24 19:46  MailClient\Debug\MailClient.exe
     文件     1763972  2013-10-24 19:46  MailClient\Debug\MailClient.ilk
     文件     5409792  2013-10-24 19:46  MailClient\Debug\MailClient.pdb
     目录           0  2013-10-25 10:50  MailClient\MailClient\
     文件        3076  2013-10-22 10:05  MailClient\MailClient\base64.cpp
     文件         517  2013-10-22 09:56  MailClient\MailClient\base64.h
     目录           0  2013-10-25 10:50  MailClient\MailClient\Debug\
     文件       20176  2013-10-24 19:33  MailClient\MailClient\Debug\base64.obj
     文件       78528  2013-10-24 19:46  MailClient\MailClient\Debug\CL.read.1.tlog
     文件       23168  2013-10-24 19:46  MailClient\MailClient\Debug\CL.write.1.tlog
     文件       22062  2013-10-14 20:26  MailClient\MailClient\Debug\DAO_ACCESSDlg.obj
     文件       73834  2013-10-24 19:33  MailClient\MailClient\Debug\LoginDlg.obj
     文件         667  2013-10-11 13:28  MailClient\MailClient\Debug\MailClient.exe.embed.manifest
     文件         732  2013-10-11 13:28  MailClient\MailClient\Debug\MailClient.exe.embed.manifest.res
     文件         381  2013-10-24 19:46  MailClient\MailClient\Debug\MailClient.exe.intermediate.manifest
     文件          64  2013-10-24 20:04  MailClient\MailClient\Debug\MailClient.lastbuildstate
     文件        1047  2013-10-24 20:04  MailClient\MailClient\Debug\MailClient.log
     文件       29793  2013-10-24 19:33  MailClient\MailClient\Debug\MailClient.obj
     文件    34406400  2013-10-24 19:33  MailClient\MailClient\Debug\MailClient.pch
     文件       73048  2013-10-24 19:33  MailClient\MailClient\Debug\MailClient.res
     文件         707  2013-10-11 13:27  MailClient\MailClient\Debug\MailClient.vcxprojResolveAssemblyReference1.cache
     文件           0  2013-10-11 13:27  MailClient\MailClient\Debug\MailClient.write.1.tlog
     文件      101824  2013-10-24 19:46  MailClient\MailClient\Debug\MailClientDlg.obj
     文件         210  2013-10-11 13:28  MailClient\MailClient\Debug\MailClient_manifest.rc
     文件       19843  2013-10-14 21:21  MailClient\MailClient\Debug\MailSmtp.obj
     文件       29385  2013-10-24 19:33  MailClient\MailClient\Debug\Pop3.obj
     文件       20605  2013-10-24 19:33  MailClient\MailClient\Debug\Smtp.obj
     文件       12599  2013-10-24 19:33  MailClient\MailClient\Debug\WSocket.obj
     文件       89843  2013-10-24 19:33  MailClient\MailClient\Debug\WriteDlg.obj
............此处省略128个文件信息

评论

共有 条评论