首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

邮件服务器

技术前沿 | Qmail | IMail | MDaemon | Exchange | Domino | 其它 | Foxmail | James | Kerio | JavaMail | WinMail | Sendmail | Postfix | Winwebmail | Merak | CMailServer | 邮件与开发 | 金笛 |
首页 > 邮件服务器 > 邮件与程序开发 > C#中对POP3邮件解码 > 正文

C#中对POP3邮件解码

出处:本站收集于网络 作者:请作者联系 时间:2005-7-11 10:15:00

  Base64和下面将要介绍的Quoted-Printable都属于MIME
(多部分( multi-part)、多媒体电子邮件和 WWW 超文本的
一种编码标准,用于传送诸如图形、声音和传真等非文本数
据)。MIME定义在RFC1341中。
    Base64是现今在互联网上应用最多的一种编码,几乎所
有的电子邮件软件头把它作为默认的二进制编码,它已经成
了现今电子邮件编码的代名词。
    下面是Base64的一个例子,从例子中,您也可以看到
Base64与电子邮件的的紧密联系:
Content-Type: text/plain;charset="cn-gb"
Content-Transfer-Encoding: BASE64
CQkJICAgIKG2wtLC68vjt6i088irobcNCgnX99XfOm1vZ2Fvo6yw19TGu8a619W+o6h0ZWxuZXQ6

Ly8yMDIuMTEyLjIwLjEzMjoyM6Ops8nUsaGjDQoJICAgICAgxKq438jtvP65pNf3ytKjumh0dHA6

Ly9tb2dhby5iZW50aXVuLm5ldA0KCQkJRW1haWx0bzptb2dhb0AzNzEubmV0DQoJICAgKioqKioq

KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICAgICAgICAgICAgICAgDQoJ

ICAgKiCz/cHLvMfS5Mqyw7S2vLK7tPjX36Oss/3By9fjvKPKssO0tryyu8H0z8IqDQoJICAgKioq

KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
    你可以把它单独存成一个文件,可以取名为:mogao.eml,
双击可以用OutLook打开(前两行为邮件的原始信息,从第四行
开始为编码内容)。
    Base64的算法同Uuencode的算法很接近,也很简单:它将
字符流顺序放入一个 24 位的缓冲区,缺字符的地方补零。然
后将缓冲区截断成为 4 个部分,高位在先,每个部分 6 位,
用下面的64个字符重新表示:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv
wxyz0123456789+/"。
如果输入只有一个或两个字节,那么输出将用等号"="补足。
这可以隔断附加的信息造成编码的混乱。它每行一般为76个字符。
    下面我给出Base64的编码和解码的C语言描述:
/*Base64编码*/
void Base64(unsigned char chasc[3],unsigned char chuue[4])
/*
  chasc:未编码的二进制代码
  chuue:编码过的Base64代码
*/
{
 int i,k=2;
 unsinged char t=NULL;
 for(i=0;i<3;i++)
 {
  *(chuue+i)=*(chasc+i)>>k;
  *(chuue+i)|=t;
  t=*(chasc+i)<<(8-k);
  t>>=2;
  k+=2;
 }
 *(chuue+3)=*(chasc+2)&63;
 for(i=0;i<4;i++)
    if((*(chuue+i)>=0)&&(*(chuue+i)<=25)) *(chuue+i)+=65;
    else if((*(chuue+i)>=26)&&(*(chuue+i)<=51)) *(chuue+i)+=71;
    else if((*(chuue+i)>=52)&&(*(chuue+i)<=61)) *(chuue+i)-=4;
    else if(*(chuue+i)==62) *(chuue+i)=43;
    else if(*(chuue+i)==63) *(chuue+i)=47;
}
/*Base64解码*/
void unBase64(unsigned char chuue[4],unsigned char chasc[3])
/*
chuue:未解码的Base64代码
chasc:解码过的二进制代码
*/
{int i,k=2;
 unsigned char t=NULL;
 for(i=0;i<4;i++)
     if((*(chuue+i)>=65)&&(*(chuue+i)<=90)) *(chuue+i)-=65;
     else if((*(chuue+i)>=97)&&(*(chuue+i)<=122)) *(chuue+i)-=71;
     else if((*(chuue+i)>=48)&&(*(chuue+i)<=57)) *(chuue+i)+=4;
     else if(*(chuue+i)==43) *(chuue+i)=62;
     else if(*(chuue+i)==47) *(chuue+i)=63;
     else if(*(chuue+i)==61) *(chuue+i)=0;
 for(i=0;i<3;i++)
 {*(chhex+i)=*(chuue+i)<<k;
  k+=2;
  t=*(chuue+i+1)>>8-k;
  *(chhex+i)|=t;
 }
}
4. Quoted-Printable
    Quoted-Printable简称QP, 一般用在Email系统中。它
通常用于少量文本方式的8位字符的编码,例如Foxmail就用
它做对主题和信体的编码。这种编码的应该是很好辨认的:
它有大量的"="。下面是它的一个例子:
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
                            =A1=B6=C2=D2=C2=EB=CB=E3=B7=A8=B4=F3=C8=AB=A1=B7
        =D7=F7=D5=DF:mogao=A3=AC=B0=D7=D4=C6=BB=C6=BA=D7=D5=BE=A3=A8telnet://202.11
2.20.132:23=A3=A9=B3=C9=D4=B1=A1=A3
              =C4=AA=B8=DF=C8=ED=BC=FE=B9=A4=D7=F7=CA=D2=A3=BAhttp://mogao.bentiun.
net
                        Emailto:mogao@371.net
           *********************************************
           * =B3=FD=C1=CB=BC=C7=D2=E4=CA=B2=C3=B4=B6=BC=B2=BB=B4=F8=D7=DF=A3=AC=B3=
FD=C1=CB=D7=E3=BC=A3=CA=B2=C3=B4=B6=BC=B2=BB=C1=F4=CF=C2*
           *********************************************
    你可以把它单独存成一个文件,取名为:mogao.eml,
双击可以用OutLook打开(前两行为邮件的原始信息,从第
四行开始为编码内容)。
    QP的算法可以说是最简单的也可以说是编码效率最低的
(它的编码率是1:3),它是专门为了处理8位字符制定的。
它的算法是:读一个字符,如果ASCII码大于127,即字符的
第8位是1的话,进行编码,否则忽略(有时也对7位字符编码)。
编码很简单,看下面的C语言描述即可:
/*QP编码*/
void qp(unsigned char sour,unsigned char first,unsigned char second)
/*
  sour:要编码的字符
  first:编码后的第一个字符
   second:编码后的第二个字符
  first和second为返回值
*/
{
 if(sour>127)
 {first=sour>>4;
  second=sour&15;
  if(first>9) first+=55;
  else first+=48;
  if(second>9) second+=55;
  else second+=48;
  printf("%c%c%c",'=',first,second);
 }
}
/*QP解码*/
void uqp(unsigned char sour,unsigned char first,unsigned char second)
/*
  sour:解码后的字符
  first:QP码的第一个字符
   second:QP码的第二个字符
  sour为返回值
*/
{
 if(first>=65) first-=55;
 else first-=48;
 if(second>=65) second-=55;
 else second-=48;
 sour=NULL;
 sour=first<<4;
 sour|=second;
}
    现在大家知道为什么QP的编码率那么低了吧!关于QP的
详细说明和准确定义可以参阅RFC2045。

,
相关文章 热门文章
  • 网易邮箱中止向QQ邮箱提供POP3服务
  • 网易免费邮箱重新免费开放POP3/SMTP服务
  • Pegasus Mail POP3响应处理栈溢出漏洞
  • Exchange 2007 POP3寄件权限问题
  • 微软:开放Hotmail支持POP3邮件下载功能
  • 巧妙实现Hotmail、MSN、Live等邮箱POP3收取
  • Hotmail正式开通免费POP3功能
  • Hotmail邮箱 POP3 功能已经向美国, 巴西等 11 国用户开放
  • Windows Live Hotmail升级 正式免费支持POP3
  • ComScore遗漏POP3 Gmail远远落后结论被指荒唐
  • 用SMTP,POP3访问Exchange邮箱:Exchange2003学习系列之六
  • 发布Exchange的SMTP,POP3服务器
  • 用C++ Builder实现电子邮件群发
  • 用Cdonts实现发送Email
  • Jmail的主要参数列表
  • ASP.NET 2.0发送电子邮件全面剖析之二
  • VC++ SMTP协议电子邮件传送剖析
  • 通过sina的smtp验证的Java发送邮件源代码
  • ASP.NET 2.0中发送电子邮件剖析之一
  • 在Asp.Net中使用SmtpMail发送邮件的方法
  • .NET环境下Email的技术介绍
  • ASP.NET 2.0发送电子邮件中存在的问题
  • 用ASP判断Email地址是否有效
  • IIS如何接收ServerXMLHTTP传过来的编码字符?
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号