多语言电子邮件地址的转换方法
技术领域
本发明涉及一种电子邮件地址的编码转换方法,尤其是关于多语言电子邮件地址的编码转换方法。
背景技术1.电子邮件的介绍
现有互联网电子邮件系统由三部分组成:
a)电子邮件地址
电子邮件地址用来识别每位邮件接收者(或者发送者),它由两部分组成,即:用户名和域名,两者由“@”符号分开。举例:电子邮件地址
haitang@ism.cn,其中haitang为用户名;ism.cn是域名。
电子邮件地址的格式在RFC2821(参见Simple Mail Transfer Protocol,J.Klensin,Apr 2001)和RFC 2822(参见Internet Message Format,P.Resnick,Apr 2001)有详细论述。
用户名被限定为US-ASCII子集,即字母(A至Z,a至z),数字(0至9)和一些符号(!#$%&’*+-/=?^_`{|}~)。除此之外,反斜线符号‘\’用作于引用字符,使得临近的字符逐一被识别。举例:“Joe\,Smith”表示9个字符(而非10个),用户名内的逗号被认定为第四个字符。域名被限制为字母(A至Z,a至z),详细内容在RFC 1035(参见DOMAIN NAMES-IMPLEMENTATION ANDSPECIFICATION,P.Mockapetris,Nov 1987)数字(0至9)和连字符号(-),并且每个字符集用圆点(.)分开。
b)电子邮件内容的格式
电子邮件信息由两部分组成:标题部分和正文部分,二者由空行分开。详细内容在RFC 2822。
标题部分由多行字符组成,例如:
Date:Sat,12 Oct 2002 08:41:00+0800
From:″Ong Hui Leng″<haitang@ism.cn>
To:″Sam″<sam@ism.cn>
Subject:This is a test
上述内容叙述了电子邮件是在2002年10月早上8点41分(时区为:+0800),由Ong Hui Leng″
haitang@ism.cn发送到Sam″
sam@ism.cn,主题为:“这是一个测试”。
标题的原文除调节字符0-31和127以外,均被限制在US-ASCII以内。(事实上,它更加复杂但是我们在这里不进行详细论述)。
主体部分是邮件的正文。例如:
Hi Sam,
This is a test of the email system.
Please reply when you receive this.
Hui Leng
邮件的主体同样除了调节字符0-31和127以外,受限制于US-ASCII内。
c)电子邮件的传输
电子邮件的传输同样在RFC 2821的简单邮件传输协议(SMTP)中有所论述。
参见图1,SMTP详细叙述了TCP/IP协议,即存储和转发系统,允许电子邮件(从寄信者)由一台服务器转到其它服务器上,直至到达接收服务器。邮件接收服务器被邮箱的域名部分识别,储存在域名系统(DNS)作为多地址(MX)记录,详细内容见RFC 1034(DOMAIN NAMES-CONCEPTS AND FACILITIES,P.Mockapetris,Nov 1987)和RFC 1035。当邮件被服务器接收后,它被存储到特殊的邮箱并由服务器识别用户名。2.国际化和本土化
国际化(I18N)和本土化(L10N)是针对为国际环境处理数据或为地方需要制定体系的计算机科学的一个分支。
I18N和L10N普遍被误解为一个用户端接口的问题,即如果“8-bit clean,然后我们可以做到I18N”。(请查阅http://www.i-dns.net/company/pressroom/papers.html并阅读有关“互联网的国际化和本土化”的文章)。
I18N和L10N的一个部分为系统的编码字符集(CCS)。
举例中文的I18N,在中国,我们可以使用GB2312,GBK或GB18030;在台湾,BIG5-TW普遍被使用;香港BIG5-HK。CCS的不同组合有不同的字符指令系统(举例来说,GB2312包含简体中文字符,US-ASCII和Cyrillic字母)可以在特殊的地区根据客户需要修改。
另一方面,在I18N中,我们调查如何处理软件兼容不同地区的编码。在这样的环境下,我们需要所有CCS的扩展集,即Unicode或ISO/IEC 10646,ISO/IECJTC1/SC2/WG2的一个工作项目。
除了CCS以外,我们也必须考虑系统的字符编码方案(CES)。ISO/IEC 10646在它的指令系统内有超过一百万个字符,并且显而易见的,它不能兼容8-bite的计算机系统。因此统一字符编码标准协会制定了处理信息的替代性编码方案,即UTF-8,UTF-16和UTF-32。同时还有其他的转换字符方案(TES),如:BASE64,Q-P和Punycode(Punycode参见A Bootstring encoding of Unicode for IDNA,A.Costello,RFC3492,Mar 2003)。3.电子邮件系统的国际化和本土化
国际化(I18N)和本土化(L10N)所做出的第一项工作是制定电子邮件系统的邮件信息的格式。因为已存在的配置服务器和客户希望信息只在US-ASCII中,使用任何的字符超过US-ASCII而且保有向后的兼容性是一项困难的任务。最终,互联网工作任务组(IETF)采用多用途互联网邮件扩充协议(MIME),在RFC 2045至RFC2049(Multipurpose Internet Mail Extensions(MIME),N.Freed,N.Borenstein,Nov 1996)中有详细论述。
MIME介绍两个TES,即BASE64和Quotable-Printable(Q-P).Q-P采用一串字符并且非US-ASCII,用(=)符号转译。另一方面,BASE64采用一串非US-ASCII字符,应用它的bit字符串只产生字母和数字。(由于这些特性,Q-P将更适合应用在有很多US-ASCII字符的语言中(例如:欧洲语言),BASE64更适合没有US-ASCII字符的语言(例如:亚洲语言)。
因此,使用这两种TES,如果电子邮件中没有US-ASCII字符,系统将转换成US-ASCII字符串并且与已经存在的邮件系统保持兼容。
TES可以应用于邮件标题和主体部分,举例:一封电子邮件
From:″Ong Hui Leng″<haitang@ism.cn>
To:″Sam″<sam@ism.cn>
Subject:你好吗?
好久不见,你好吗?如果有空,请你Emai1我。
Hui Leng
将被编码为:
From:″Ong Hui Leng″<haitang@ism.cn>
TO:″Sam″<sam@ism.cn>
Subject:=?gb2312?B?xOO6w8Lwo78g?=
MIME-Version:1.0
Content-Type:text/plain;charset=″gb2312″
Content-Transfer-Encoding:8bit
Hui Leng
因为I18N和L10N使终端用户受益,当SMTP在后台运行时,终端用户看不到,它并非I18N的替代品。然而,为了使I18N能够在前端运行,SMTP扩展其处理能力以至于超越7-bit US-ASCII.。为了使SMTP服务器能够处理8位的数据而引入了以8BITMIME而闻名的Handshake Mechanism。如果8BITMIME不在当前运行,因此SMTP发送服务器将会返回7-bit US-ASCII,应用TES中BASE64或Q-P。(注意:系统支持8BITMIME,所以从内容—传送—编码是8bit,否则将返回BASE64。)
在以后的2年中,IETF在I18N的域名系统(IDN)(http://www.ietf.org/html.charters/idn-charter.html)中运行,并可以应用字母和阿拉伯数字以及连字符号。基本上该机械装置是除了IDN的Nameprep(Name-preparation Step)(参见AStringprep Profile for Internationalized Domain Names,P.Hoffman,M.Blanchet,RFC3491,Mar 2003)和以Punycode命名的新TES以外,与MIME相似。关于IDN请参见Internationalized Domain Name Working Group,http://www.i-d-n.net/,J.Seng,M.Blanchet,Jan 2000。
然而,电子邮件还不完全是国际化的。我们很容易设想在多语言电子邮箱系统中的电子邮件地址如:王慧玲@爱思美.公司可以在限定的系统内运行,但是在现行的邮箱和客户端系统中却很难兼容。这就是我们要解决的问题。
发明内容
本发明的目的就是要实现电子邮件地址的多语言转换,即将电子邮件地址的多语言编码转换为与现有的邮件系统相兼容的编码,反之亦然。
为达到前述目的,本发明所采用的技术方案之一在于提供一种将多语言编码的电子邮件地址转换为ASCII编码的转换方法,其特征在于,所述的转换方法包括以下步骤:
(1)邮件接受服务器将所述的多语言电子邮件地址放入FERBER的Separators中进行分离;
(2)该服务器将每个被分离的部分由Unicode转化为Punycode;
(3)该服务器将转化为Punycode的各部分结合‘@’字符汇合在一起;
(4)该服务器根据‘@’字符将第(3)步骤的结果分为位于‘@’之前的用户名部分和位于‘@’之后的域名部分;
(5)运用域名映射将第(4)步骤的多语言域名转换为ASCII域名;
(6)该服务器结合第(4)步骤的用户名部分,‘@’字符,和第(5)步骤相应的ASCII域名,得到所述的ASCII电子邮件地址。
所述的域名映射包括以下步骤:
(1)当进行权利要求1的第5步骤时,客户端向服务器发出一个询问指令,输入由Punycode编码的多语言域名查询与之相应的映射域名;
(2)服务器从数据库或其他服务器中查找第1步骤所述的多语言域名;
(3)如果找到,则显示OK状态并向客户端返回与所述的多语言域名相应的ASCII域名;
(4)如果未找到,则显示失败状态并向客户端返回错误信息。
本发明所采用的技术方案之二在于提供一种将ASCII编码的电子邮件地址转换为多语言编码的转换方法,其特征在于,所述的的转换方法包括以下步骤:
(1)邮件接受服务器将所述的ASCII电子邮件地址放入FAERBER的Separators进行分离;
(2)该服务器检查被分离出的字符串的至少一部分ACE前缀,否则,将整个字符串转换成Unicode再还原;
(3)该服务器根据’@’将字符串分离,获得位于‘@’之前的用户名部分和位于‘@’之后的域名部分;
(4)使用域名映射将第(3)步骤的域名部分转换为对应的由Punycode编码的中文域名。
(5)该服务器结合来自第(3)步骤的用户名部分,‘@’字符,和来自第(4)步骤的Punicode编码的中文域名.
(6)该服务器将Punycode转换成为Unicode编码,得到所述的多语言电子邮件地址。
所述的域名映射包括以下步骤:
(1)当进行权利要求7的第4步骤时,客户端向服务器发出一个询问指令,输入ASCII域名,查询与之相应的映射域名;
(2)服务器从数据库或其他服务器中查找第1步骤所述的ASCII域名;
(3)如果找到,则显示OK状态并返回所述的电子邮件地址由Punycode编码的多语言域名;
(5)如果未找到,则显示失败状态并返回错误信息。
使用域名映射技术有以下优势:
1、多语言域名目前仍由ICANN授权分配,如:“爱思美.公司”(使用IDNA转换成Punycode:“xn--m8t651bjxj.xn--55qx5d”)由于xn--55qx5d顶级域名仍由ICANN分配给各地的注册机构,目前还不能在互联网上应用。然而采用域名映射技术就可以完全没有这样的限制了。
2、Punycode编码的多语言域名目前没有更多的讯息,但通常不会给用户带来问题。然而,当现有的系统不支持解析Punycode时,用户将无法使用。但使用域名映射技术后,Punycode编码的域名会在发送给现有的系统前将域名转换成系统可以识别的ASCII。
附图说明
图1:电子邮件由发送端到达接收端的过程;
图2:多语言电子邮件地址的转换概况;
图3:根据对Web Mail软件的改进实现的多语言电子邮件地址;
图4:针对Webmail的Windows插件实现的多语言电子邮件地址。
具体实施方式1、多语言电子邮件地址的相互转换方法
为了要保持向后的兼容性,多语言电子邮件住址是一个预先围绕传统ASCII电子邮件地址而做的层。它允许信息到达邮件接收服务器那里。即使网络通信缺少对它的支持(举例来说电子邮件服务器)。一个多语言电子邮件地址的形式为用户名@域名,用户名,域名或二者都可以包含非英语字符。除此之外,’@’标记符号在其他的语言中可能被替换成一些相似的符号。1.1由Unicode编码的多语言电子邮件地址转换为ASCII编码
具体操作程序表述如下:
1、邮件接受服务器将电子邮件地址分别放入Separators的不同部分,如FAERBER(Internationalization of Email Addresses,Newsgroup Names andsimilar Identifiers,C.Faerber,draft-faerber-i18n-email-netnews-names-00.txt,Aug 2002)所述。
2、该服务器将每个被分离的部分利用IDNA(参见Internationalizing DomainNames In Applications(IDNA),P.Faltstrom,P.Hoffman,A.Costello,RFC3490,Mar 2003)里的ToASCII程序转化成Punycode。
3、该服务器使用最初的字符Separators的标准版本将分开的部分汇合在一起.
4、结果用“@”分为用户名(“@”之前的部分)和域名(“@”之后的部分)。
5、域名部分运用域名映射程序查找相应的ASCII域名
6、最后的结果:该服务器结合第4步骤的用户名部份,’@’字符,和第5步骤的相应ASCII域名。得出命令行。
举例:如果按照以上的步骤和方法输入
王慧玲@爱思美.公司,得到相对应的ASCII编码域名的过程为:
1、三部分:王慧玲,爱思美,公司
2、Punycode:xn--lius71bnd,xn--m8t651bjxj,xn--55qx5d
3、Combined:
xn--lius71bnd@xn--m8t651bjxj.xn--55qx5d
4、local-part:“xn--lius71bnd”,domain:
“xn--m8t651bjxj.xn--55qx5d”
5、After mapping,domain:“ism.cn”
6、Combined again:
xn--lius71bnd@ism.cn1.2由ASCII编码的电子邮件地址转换为Unicode编码
有时,我们需要获得最初的Unicode字符,因此,一个相反运算,即:ASCII转换为Unicode,程序如下:
1、接受端服务器将字符串放入Separators,如[FAERBER]所述。
2、该服务器检查至少一部分ACE前缀,否则,将整个字符串转换成Unicode再还原。
3、该服务器根据’@’将字符串分离,获得用户名和域名。
4、使用域名映射将第3步骤的域名部分转换为对应的Punycode编成的中文域名。
5、该服务器结合来自第3步骤的用户名部分,@字符,和来自第4步骤的Punicode中文域名。
6、该服务器用IDNA的ToUnicode过程,将Punycode转换成为Unicode编码。如果按照以上的步骤和方法输入
xn--lius71bnd@ism.cn,得到相对应的Unicode编码域名的过程为:
1、两部分:xn--lius71bnd,ism.cn
2、ACE prefix“xn--”detected.
3、local-part:“xn--lius71bnd”,domain:“ism.cn”
4、After mapping,domain:“xn--m8t651bjxj.xn--55qx5d”
5、Combined:
xn--lius71bnd@xn--m8t651bjxj.xn--55qx5d
6、After IDNA ToUnicode process:
王慧玲@爱思美.公司
虽然上述的所有例子是针对中文而言,然而通过域名映射的转换技术可以运行Unicode所支持的任何语言。目前为止Unicode支持300多种语言,如图2所示。2、域名映射(Domain Mapping)
域名映射是将多语言域名转换成相对应的ASCII域名,或者是相反的过程。我们把域名映射服务器附属在域名映射数据库中,数据库将包含所有的电子邮件的多语言域名和相应的ASCII域名。域名的获取是通过询问网络信息中心的集中式或分布式数据库而获得的。比如:互联网,局域网,甚至移动通信网络。
域名映射的询问从两个方面运行:
a.多语言字符转换成ASCII(Multi-lingual to ASCII)—以此获得相对应的ASCII电子邮件地址。
b.ASCII转换成多语言字符(ASCII to Multi-lingual)—使多语言电子邮件地址可以还原成其原来的编码和形式。
域名映射的询问输入的内容至少应包含要查找的域名。这个输入的域名根据运行的需要可以是ASCII也可以是多语言的(多语言转换成ASCII,或者ASCII转成多语言),并且适当的被编成易于转换的字符和编码。首先输出的域名映射询问是相对应的域名,或者与其他辅助的属性同时输出,不过这是可以选择的。2.1通过HTTP方式实现域名映射
正因为HTTP协议的多种令人满意的特性,比如其大众性,及其能穿透大多数公司内部网上防火墙的超凡能力。因此,它非常适合作为一种端口用于域名映射。
URL在域名映射功能中主要用于客户端应用程序中的使用。URL后通常隐藏着运行在一个或者一组web服务器的应用程序。此协议可以通过下面的例子来解释:
Domain Mapping的客户端需要从服务器中获得Mapping结果。
举例,客户端发送一个询问(由ASCII至多语言):
http://www.ism.net.cn/mailmap?domain=ism.cn服务器返回:
map:ism.cn
status:ok
domain:xn--m8t651bjxj.xn--55qx5d
所获得的多语言域名是由Punycode编码而成的,在这个例子中:xn--m8t651bjxj.xn--55qx5d被Punycode编码成“爱思美.公司”。
举例,客户端发送一个询问(由多语言至ASCII):
http://www.ism.net.cn/mailmp?domin=xn--m8t651bjxj.xn--55qx5d
服务器返回:
map:xn--m8t651bjxj.xn--55qx5d
status:ok
domain:ism.cn
输入的多语言域名使用Punycode编码成标准的ASCII编码的域名。
如果发生错误,结果将是:
map:xn--m8t651bjxj.xn--55qx5d
status:failed
error:534
error-message:Domain not in database
如上所述来自服务器的应答表明发生错误。在这种情况下,数据库中没有找到所查询的域名。2.2使用其它传输方式的域名映射
其它可用于域映射询问功能的方式,举例如下:
a.域名系统(DNS):使用现有的DNS结构,拥有可扩充及自动恢复性能,域名服务系统可以设计一种方法在DNS记录中显示域名映射入口,并使用标准的DNS请求以获取结果。
b.通过HTTP的XML格式:除了在2.2.1章节使用的编程体系外,系统可以生成一种XML格式用于询问与应答,以此可以较简单的支持其他功能。
c.直接询问数据库:在包含域名映射功能的本地或网络数据库可被直接询问。3.具体实现
根据以上对域名映射技术的描述,我们采用两种方法实现多语言电子邮件系统的运行,即,Web mail系统和Windows插件。3.1 Web mail系统
基本的Web mail以开放性资源为基础的。我们改进了Web mail软件并使它支持多语言电子邮件系统,如图3所示。
根据对Web mail的改进,可以实现下述功能:
a)一个帐户拥有一个英文的电子邮件和一个多语言电子邮件地址;
b)允许以多语言或英文的用户名登陆;
c)多语言电子邮件将在邮件信头部分完成编码转换;
d)显示多语言的电子邮件。
该软件还可具有下述改进:
a)允许邮件通过POP取回;
b)阻止SMTP传播垃圾邮件;
c)可靠的SMTP(要求数字证书);
d)可靠的POP(要求数字证书)。3.2 Window插件
Windows插件的开发是为了更好的支持多语言电子邮件系统。使用多语言电子邮件的用户可以下载这个插件。
我们开发了两种不同的Windows插件:一个是针对Web mail开发的;另一个是以Windows为基础的其它客户端开发的(例如Outlook,Foxmail等)。
一种插件是支持IE4.X及以上版本的Browser Helper Object(BHO)。当BHO安装完毕,将使其他的Web mail电子邮件系统支持多语言电子邮件系统.(举例:YahooMail),如图4所示。
BHO将用户键入的王慧玲@全通.公司,电子邮件地址转换成:
zq--lius71bnd@cs-mail.net(新版本使用IDNA所指定的xn--prefix)
BHO可以自动更新,以便于将来支持其它的Web Mail系统。
另一个插件是为了支持以Windows为基础的客户端开发的。其功能与BHO相似。