自制Pop3邮件接收系统(一):利用MatchEvaluator实现HZ的解码

原创 2002年12月12日 09:11:00

要作自制的Pop3邮件接收系统,就要自己处理邮件的编码

大家可能会收到以下的“乱码”,
~{4s<R:C#,NRJG~}qiushuiwuhen~{#,;6S-@45=~}csdn.

实际上是简体中文的HZ编码,在邮件中经常会出现,

因为邮件协议体系通常是七位的,而汉字却是双字节的

所以就使用以下的方法对其进行解码

String hzDecode(Match m){
 String tmp=m.ToString();
 byte[] ret=new byte[tmp.Length-4];
 for(int i=0;i<ret.Length;i++)
  ret[i]=(byte)(tmp[i+2]+128);
 return Encoding.GetEncoding(936).GetString(ret);
}


使用范例:
  string strHz="~{4s<R:C#,NRJG~}qiushuiwuhen~{#,;6S-@45=~}csdn.";
  strHz=Regex.Replace(strHz,@"~/{(.+?)~/}",new MatchEvaluator(hzDecode));
  Response.Write("/nHZ Decode="+strHz);


随便带上编码的代码(可用来发送邮件用)

String hzEncode(Match m){
 byte[] tmp=Encoding.GetEncoding(936).GetBytes(m.ToString());
 StringBuilder ret=new StringBuilder("~{");
 for(int i=0;i<tmp.Length;i++)
  ret.Append((char)(tmp[i]-128));
 ret.Append("~}");
 return ret.ToString(); 
}

使用范例:
  string strHz="大家好,我是qiushuiwuhen,欢迎来到csdn.";
  strHz=Regex.Replace(strHz,@"[^/x00-/xff]+",new MatchEvaluator(hzEncode));
  Response.Write("<xmp>HZ Encode="+strHz);

原理:使用MatchEvaluator的回调(CallBack)函数执行Regex的替换操作

用PHP实现POP3邮件的解码

原文内容没有变化,在公司快消化了两个系统了,所以打算自己写一个功能还可以的个人系统,我知道网上很多,我也收集了好几个,但是想看看自己能不能做出来,好好加油吧,在筹备的过程中遇到了邮件这样的问题,所以花...
  • yw1386
  • yw1386
  • 2009年09月17日 17:01
  • 1423

C++ 建立邮件客户端之收邮件(利用POP3)(一)

POP是邮局协议(Post Office Protocol),使TCP/IP协议族中的一员,它是由RFC 1939定义的. 本协议主要是用于支持使用客户端远程管理在服务器上的电子邮件.最新版本是POP...
  • wsy526659583
  • wsy526659583
  • 2013年12月28日 11:57
  • 2967

JavaMail系列(四) 使用POP3协议接收并解析电子邮件

package org.yangxin.study.jm;    import java.io.BufferedInputStream;  import java.io.BufferedOutp...
  • jarniyy
  • jarniyy
  • 2016年05月04日 15:52
  • 3959

C# pop3实现的收邮件

 C# pop3实现的收邮件东西写的不太清楚  可以显示邮件正文  标题  发件人,及邮件数,删除邮件!含有DecodeBase64和quoted-printable  解码 using System...
  • kurt520
  • kurt520
  • 2008年01月23日 16:14
  • 459

C#实现POP3邮件接收程序

来自:http://outofmemory.cn/code-snippet/2409/C-achieve-POP3-email-receive-program 本文通过运用C#来实现一个基于...
  • ArvinStudy
  • ArvinStudy
  • 2013年03月08日 11:41
  • 2814

使用SMTP 和POP3 协议实现收发邮件(C/C++)

SMTP协议和POP3协议就不详细阐述了 ,网上一搜索会有一大把给你解释的。 下面直接贴代码: 首先写一个class Sock类,这个类的功能主要是创建套接字(即int soc...
  • wyhang0
  • wyhang0
  • 2014年11月26日 14:53
  • 1194

POP3重复接收邮件的问题研究

在Outlook 2003中设置了在服务器上保留邮件副本之后,在pst文件中就会生成一个已经接收邮件的列表,称为UIDL缓存。UIDL是标志一个邮箱中唯一一封邮件的标志。这样客户端连接到POP3服务器...
  • xtx1990
  • xtx1990
  • 2013年05月22日 16:54
  • 1150

C#中对POP3邮件解码

Base64和下面将要介绍的Quoted-Printable都属于MIME (多部分( multi-part)、多媒体电子邮件和 WWW 超文本的 一种编码标准,用于传送诸如图形、声音和传真等非文本数...
  • 21aspnet
  • 21aspnet
  • 2007年03月24日 14:15
  • 3563

POP3邮件接收协议命令使用详解

第1章 POP3概述 POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型,对应的RFC文...
  • New_Teacher
  • New_Teacher
  • 2016年05月13日 09:28
  • 5169

Python邮件收发(SMTP POP3)

SMTP邮件发送    SMTP(Simple Mail Transfer Protocol) 简单邮件传输协议。    smtplib模块    创建SMTP对象 smtpl...
  • HzSunshine
  • HzSunshine
  • 2017年05月26日 19:43
  • 2844
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自制Pop3邮件接收系统(一):利用MatchEvaluator实现HZ的解码
举报原因:
原因补充:

(最多只允许输入30个字)