邮件地址的定义(Email Address Specification)

电子邮件用了N年了,也知道邮件地址的格式就是“用户名@域名”的格式,但是还没真正研究过什么是一个合法的邮件地址,为此特别查了一下相关的协议。

 
邮件地址用于Internet上的邮件传输,在RFC5321和RFC5322 定义。实际上这两个RFC上修订后版本了,最初的版本是RFC821和RFC822。
 
一个邮件地址,例如jsmith@gmail.com,由两部分组成。“@”前面的称为local-part,一般就是收件人的用户名,“@”之后为domain name,邮件系统就是通过域名来发送邮件。local part最大长度为64个字符,domain name最大长度为253个字符,而整个邮件地址长度不能超过254个字符。实际上,协议 定义是最长256个字符,但是因为邮件地址在用于接收或回复地址时,还会在前后加上"<>",所以只能是254了。
 
域名的定义就不多说了,主要是对local part部分进行说明。
 
local part由以下字符组成:
  • 大小写字母(A-Z,a-z)
  • 数字(0-9)
  • 特殊字符(! # $ % & ' * + - / = ? ^ _ ` { | } ~),但其很多字符被认为是不安全的字符,很少在实际邮件系统被使用。
  • 点字符".",但这个字符不能作为loca part的开始和结束字符,也不能出现连续两个(例如john..smith)
 
另外,local part可以使用quoted-strings,也就是引号包括起来的字符串,例如"John Smith"@gmail.com。quoted-strings被认为是连续不可分隔的内容,其 可以出现空格字符。但实际上这种方式通常没有使用,并且在RFC5321 也警告最好不要使用这种方式,否则可能在发送和接收邮件时出现问题。
 
在RFC ,local part是大小写区分的,但这个实际上要看邮件服务器的具体实现,有一些邮件服务器是不区分大小写的。甚至,有些邮件系统规定了只允许使用有限的 特殊字符(例如只允许使用"-"、"_"和"."),这些都是由具体的邮件系统实现来确定的。例如在gmail ,local part 允许出现".",但是服务器会自动忽略掉所有的"."字符,因此如果存在一个local part为your.username的帐号,那么your.user.name或者yourusername这样的帐号都不会允许被创建。
 
RFC也试图对邮件地址进行国际化,例如“张三@浙商银行”这样的形式,但是,实际情况是不允许使用这样的邮件 地址的,现有的邮件服务器不会处理这样的地址。

本文转自 拾瓦兴阁 51CTO博客,原文链接:http://blog.51cto.com/ponyjia/1129833

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值