详解Address和RFC 822

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiao__jia__jia/article/details/83449968

                               详解Address和RFC 822

  1. 名称解释

  RFC 822

电子邮件的标准格式 (RFC 822)    除了由一个Internet用户传递给另一个用户的信息之外,电子邮件中还必须包含附加的服务信息。SMTP服务器利用这些信息来传递邮件,而客户端的邮件接收软件则利用这些信息来对邮件进行分类。

每封邮件都有两个部分:信头和主体。

信头部分的字段可分为两类。一类是由你的电子邮件程序产生的,另一类是邮件通过SMTP服务器时被加上的。在所有被SMTP服务器加上的字段中,对我们而言最重要的是Message-Id字段。这个字段是由你传向的SMTP服务器加上的。这是一个唯一的ID号。你可用这个号码作为邮件的编号。   

下表列出了可由用户的邮件程序控制的信头字段。这并不意味着所有的字段都是必须的。实际上可以忽略形成信头这一步骤而只发送正文。让你的SMTP服务器为你加上最起码的必需字段。   

信头字段 目的   
From 邮件作者   
Sender 发信人   
Reply-To 回邮地址   
To 收信人地址    
CC 抄送:另一个收信人地址    
BCC 密送:收信人地址,但其它收信人看不到这个收信人的地址。   
Subject 主题   
Comments 备注   
Keywords 关键字,用来进一步搜索邮件    
In-Reply-To 被当前邮件回复的邮件的ID    
References 几乎同In-Reply-To一样   
Encrypted 加密邮件的加密类型   
Date 发信日期   

Address 

Javamail中关于Address的类共有3个类。分别是:
Javax.mail.Address (抽象基础类) 
javax.mail.internet.InternetAddress (继承于Address)
javax.mail.internet.NewsAddress  

1、Javax.mail.Address

抽象方法 
abstract String getType() 
Return a type string that identifies this address type. 
返回Address的类型。若InternetAddress则返回rfc822。
abstract String toString() 
Return a String representation of this address object. 
返回表述Address对象的String。
这个String只能包含US_ASCII码。
static String toString(Address[] addresses, int used) 
Convert the given array of InternetAddress objects into a comma separated sequence of address strings. The resulting string contains only US-ASCII characters, and hence is mail-safe.  The 'used' parameter specifies the number of character positions already taken up in the field into which the resulting address sequence string is to be inserted. It is used to determine the line-break positions in the resulting address sequence string.
used参数用于指定要被插入字符串的字符位置数。

2.解析  static InternetAddress[] parse(String addresslist)  

Parse the given comma separated sequence of addresses into InternetAddress objects.
把一个由逗号分隔的地址字符串系列解析成InternetAddress数组。地址必须遵循RFC822中的语法。 
static InternetAddress[] parse(String addresslist, boolean strict)  
Parse the given sequence of addresses into InternetAddress objects. If strict is false, simple  email addresses separated by spaces are also allowed. If strict is true, many (but not all) of the RFC822 syntax rules are enforced. In particular, even if strict is true, addresses composed of simple names (with no "@domain" part) are allowed. Such "illegal" addresses are not uncommon in real messages. 
把一个地址字符串系列解析成InternetAddress数组。若strict是false,由空格分隔的简单邮件地址也是允许的。若strict是true,许多(但不是全部)RFC822语法规则将被执行。即使strict是true,若地址不包含(@域名)部分也是允许的。
没有strict参数的通常用于解析用户输入的邮件地址字符串 static InternetAddress[] parseHeader(String addresslist, boolean strict)  
Parse the given sequence of addresses into InternetAddress objects. 
把一个地址字符串系列解析成InternetAddress数组。若strict是false,个人地址的完整语法规则都不用执行。若strict是true,许多(但不是全部)RFC822语法规则将被执行。
为了更好的支持消息中的无效地址。若strict是false,此方法执行比parse(“xx”,false)还要少的语法规则。若strict是true,此方法执行比parse(“xx”,true)更多的语法规则。

3.获取当前用户地址 

static InternetAddress getLocalAddress(Session session)  
Return an InternetAddress object representing the current user.


 

猜你喜欢

转载自blog.csdn.net/xiao__jia__jia/article/details/83449968