为什么方法Message.getFrom()返回一个数组?

时间:2014-10-27 08:18:10

标签: java email javamail

Javamail API有一个Massage类,它有一个getFrom()方法,你可以在这里找到:

https://javamail.java.net/nonav/docs/api/javax/mail/Message.html#getFrom()

关于这种方法的两个问题:

  1. 为什么它返回一个Address对象数组而不是一个Address对象?我想不出多个发件人发送邮件的情况。
  2. 在某些实现中,文档说它可能与实际发送消息的实体不同。有这样一个实现的例子吗?

1 个答案:

答案 0 :(得分:3)

在标准RFC 5322 SMTP中允许多个FROM地址

  

<强> 3.6.2。发起人字段

     

邮件的发件人字段包括from字段,sender字段(如果适用),以及可选的reply-to字段。 from字段由字段名称“From”和一个或多个邮箱规范的逗号分隔列表组成。如果from字段在邮箱列表中包含多个邮箱规范,则必须在邮件中显示包含字段名称“Sender”和单个邮箱规范的sender字段。在任何一种情况下,都可以包括一个可选的回复字段,其中包含字段名称“Reply-To”和一个或多个地址的逗号分隔列表。

     

from =“From:”mailbox-list CRLF

看看Michael Hampton对此服务器故障问题的回答:SMTP allows for multiple from addresses. Was this ever useful, why does this exist?

正如他在回答中提到的那样:

  

RFC 822实际上给出了这种用法的一个例子。它要求   发件人:标题在使用时存在。

  

A.2.7。委员会成员代理

         George's secretary sends out a message which was authored
    jointly by all the members of a committee.  Note that the name
    of the committee cannot be specified, since <group> names  are
    not permitted in the From field.

        From:   Jones@Host,
                Smith@Other-Host,
                Doe@Somewhere-Else
        Sender: Secy@SHost