• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

:求救各位大侠,怎样对接收到的邮件附件(*.eml格式)解码?急!!!

cococut 2001-08-02 10:17:48
我用文本方式打开*.eml文件,如下:
x-sender: seaboat@cmsland.com
x-receiver: cococut@cmsland.com
Received: from mail pickup service by webserver.landserver with Microsoft SMTPSVC;
Wed, 1 Aug 2001 15:19:44 +0800
From: "seaboat" <seaboat@cmsland.com>
To: <cococut@cmsland.com>
Cc:
Subject: 有附件
Date: Wed, 1 Aug 2001 15:19:44 +0800
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700
Message-ID: <WEBSERVER5mcDPb0Ywk00000002@webserver.landserver>
X-OriginalArrivalTime: 01 Aug 2001 07:19:44.0622 (UTC) FILETIME=[56A690E0:01C11A5A]

begin 666 笔记.txt
MUL?$W-:XU>NCNK[-RL?2N[CVUMC4V,'++:&UM<3 X*.LN,/6N-7KUM"P_+JL
MP>W-XM*[N/:VU,_SM<36N-7KHZP-"K6QT\.[I[7WT\/6Q\3<UKC5Z\G/+:&U
MM<3*L;KRHZRXP]:XU>NPT;7WT\/7JK>BN/C![<WBM<32N[CVUKC5ZZ&C#0H-
M"F-O;;7$MN#,K-#4M<3#Z,KVH[H-"B @(,CGN?NVX+CV8V]MMM3/\\JUS];-
MK-'YP_O7UK7$O=._VJ.LQ,?#M+_-NZ>VR].FT\//X,VLM<2T^L+KOLV_R=+4
M#0JTIL#MLKO-K+7$MM3/\Z.LTO+.JLVLTKNX]F-O;;;4S_._R=+4RK7/UK;@
MN/:]T[_:HZS+^=+4MN#,J-#4TK*_R=+4#0K4VLVLTKNX]KW3O]K6T+'MS]:A
MHPT*("!C;VVWUK'PU-K(_;CVLN.TSLG/S.7/UK;@S*S0U*.ZO=._VK/)U+&Z
MK\K]H:*UI;CVO=._VJ&BTKO7Z;W3O]H-"M*RT.W2JLK O>?-ZLBKNLW&O;*B
MSK3*M<_6N?T-"M*RT.W2JL._N/;$T<SBS>K(J[WBM/#*Q[3M#0K.TK*[N?W2
MJL3CM/#3IL/4S;[.RL*WL>/.RL[2#0K2JM/KQ./(I;6]Q,3 [["NM;W$Q,#O
MLKO+X]?ON?T-"@T*HZK'Z<+"O.3*Q\ZJR?7#M+"NM;W2JLGZO]ZUO=*JR\ -
M"LNMN^'6JLK'SJK)]<.TU_;'Z<C+T.C2JM3+QO@-"K;XSM+6N\C5TKG#SL_K
MO>C$X[;ZMN0-"LS]SM*VU,3CR[7.TK"NQ.,-"M/ U+;,J[;,LKO+X\RKO^S+
MM<[2L*[$XZ&AHZH-"@T*TK+0[=*JR*7"\KK NZK3RL+6RK74VLK'P,NWT0T*
MTK+0[=*JO[3-N,"TQ.K(Y[K.LKO'T,JUO,H-"L[2UKO2JM/KQ./$W,CGLZ/(
MR\JBS\2QX[N[O+X-"L7"P[^X]KR^O=K$X[OAS*O Y,RKQ:^RN\OCL+JY\PT*
"#0H`
`
end

乱码部分为附件文件,怎么把乱码部分解码,然后保存为另外一个文件,在
本地保存,用到那个rfc协议,可否告知,是不是用那个叫什么base64解码,
还是什么,请各位帮帮忙?我下栽了一个类,不懂怎么用,我也没有看过相关
的rfc协议,该类中有CBase64,CTextPlain,CAppOctetStream,这些都是干什么?
可否详细告知?
...全文
202 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cmpp 2001-12-20
我来学习一下!
回复
LiXun 2001-12-20
上面的不是太懂,能把详细给我发一份吗?
lixun007@163.net
回复
vccsdn 2001-12-20
能给我一个吗?
email: johnsonxxw@163.net
谢谢了
回复
Colorstone0823 2001-10-17
gz
回复
guxuefeng 2001-10-17
自己写一个转换程序啊。
Base64的编码方式是:将原始数据转换成二进制,然后再每6位取数据,组成一个字符。解码时反过来就行了。
*s_Coded表示是经过编码的字符串;*s_Decode表示是输出的解过码的字符串;n_Len表示s_Coded的长度。
unsigned short i,t,k; //t表示尾部剩余的不足4字节数据的长度。
t = n_Len % 4;
for(i = 0; i < n_Len/4; i++)
{
s_Decode[3*i] = (s_Coded[4*i] << 2) & 0xfc + (s_Coded[4*i+1] >> 4) & 0x03;
s_Decode[3*i+1] = (s_Coded[4*i+1] << 4) & 0xf0 + (s_Coded[4*i+2] >> 2) & 0x0f;
s_Decode[3*i+2] = (s_Coded[4*i+2] << 6) & 0xc0 + s_Coded[4*i+3] & 0x3f;
}

unsigned char tail[4]; //处理尾部数据
for(k = 0; k < 4; k++) //置0
tail[k] = 0;
for(k = 0; k < t; k++)
tail[k] = s_Coded[4*i+k];

if(t > 0)
s_Decode[3*i] = (tail[0] << 2) & 0xfc + (tail[1] >> 4) & 0x03;
if(t > 1)
s_Decode[3*i+1] = (tail[1] << 4) & 0xf0 + (tail[2] >> 2) & 0x0f;
if(t > 2)
s_Decode[3*i+2] = (tail[2] << 6) & 0xc0 + tail[3] & 0x3f;

代码写得比较粗糙,请谅解。
回复
guxuefeng 2001-10-17
自己写一个转换程序啊。
Base64的编码方式是:将原始数据转换成二进制,然后再每6位取数据,组成一个字符。解码时反过来就行了。
*s_Coded表示是经过编码的字符串;*s_Decode表示是输出的解过码的字符串;n_Len表示s_Coded的长度。
unsigned short i,t,k; //t表示尾部剩余的不足4字节数据的长度。
t = n_Len % 4;
for(i = 0; i < n_Len/4; i++)
{
s_Decode[3*i] = (s_Coded[4*i] << 2) & 0xfc + (s_Coded[4*i+1] >> 4) & 0x03;
s_Decode[3*i+1] = (s_Coded[4*i+1] << 4) & 0xf0 + (s_Coded[4*i+2] >> 2) & 0x0f;
s_Decode[3*i+2] = (s_Coded[4*i+2] << 6) & 0xc0 + s_Coded[4*i+3] & 0x3f;
}

unsigned char tail[4]; //处理尾部数据
for(k = 0; k < 4; k++) //置0
tail[k] = 0;
for(k = 0; k < t; k++)
tail[k] = s_Coded[4*i+k];

if(t > 0)
s_Decode[3*i] = (tail[0] << 2) & 0xfc + (tail[1] >> 4) & 0x03;
if(t > 1)
s_Decode[3*i+1] = (tail[1] << 4) & 0xf0 + (tail[2] >> 2) & 0x0f;
if(t > 2)
s_Decode[3*i+2] = (tail[2] << 6) & 0xc0 + tail[3] & 0x3f;

代码写得比较粗糙,请谅解。
回复
guxuefeng 2001-10-17
自己写一个转换程序啊。
Base64的编码方式是:将原始数据转换成二进制,然后再每6位取数据,组成一个字符。解码时反过来就行了。
*s_Coded表示是经过编码的字符串;*s_Decode表示是输出的解过码的字符串;n_Len表示s_Coded的长度。
unsigned short i,t,k; //t表示尾部剩余的不足4字节数据的长度。
t = n_Len % 4;
for(i = 0; i < n_Len/4; i++)
{
s_Decode[3*i] = (s_Coded[4*i] << 2) & 0xfc + (s_Coded[4*i+1] >> 4) & 0x03;
s_Decode[3*i+1] = (s_Coded[4*i+1] << 4) & 0xf0 + (s_Coded[4*i+2] >> 2) & 0x0f;
s_Decode[3*i+2] = (s_Coded[4*i+2] << 6) & 0xc0 + s_Coded[4*i+3] & 0x3f;
}

unsigned char tail[4]; //处理尾部数据
for(k = 0; k < 4; k++) //置0
tail[k] = 0;
for(k = 0; k < t; k++)
tail[k] = s_Coded[4*i+k];

if(t > 0)
s_Decode[3*i] = (tail[0] << 2) & 0xfc + (tail[1] >> 4) & 0x03;
if(t > 1)
s_Decode[3*i+1] = (tail[1] << 4) & 0xf0 + (tail[2] >> 2) & 0x0f;
if(t > 2)
s_Decode[3*i+2] = (tail[2] << 6) & 0xc0 + tail[3] & 0x3f;

代码写得比较粗糙,请谅解。
回复
cococut 2001-08-02
我简单的调用CBase64中Decode(LPCTSTR szDecoding, LPTSTR szOutput ),把乱码传进去,
可是传出来的szOutput全部为0,怎么回事?
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-08-02 10:17
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……