2015-04-01 89 views
1

从传入邮件中提取BCC地址时,我面临一个问题。 以下是使用的示例代码。无法读取java中已发送邮件的BCC字段

public EmailVO dumpEnvelope(Message m) throws Exception { 
      EmailVO emailVO = new EmailVO(); 
     if ((addresses = m.getRecipients(Message.RecipientType.BCC)) != null) { 
      emailVO.setBcc(this.getAddresses(addresses, "BCC")); 
     } 
} 

我在BCC中获得了空值。 在调试过程中,我在标题字段中找到BCC收件人的名字,但我无法访问该标题。 此代码问题或发送邮件时有一些特定的设置,如不包括密件抄送字段?

回答

1

您可以检查您的消息对象,其中包含有关邮件的所有详细信息。 由于密件抄送是邮件的一部分,但也会隐藏,但根据我的知识,您可以从邮件标题中检索信息。

Address[] addresses = m.getHeader("Your Header Name HERE"); 

这会给你所有关于邮件中特定标题标签的细节。

例如,

Address[] addresses = m.getHeader("Delivered-To"); 

这个标签会给你所有关于邮件的收件人,这也将包括BCC信息。

您还可以为邮件添加自定义标头。

0
addresses = m.getRecipients(Message.RecipientType.BCC); 

返回一个地址数组。您可以检查的内容为循环:

Address[] addresses = m.getRecipients(Message.RecipientType.BCC); 
for(Address address : addresses){ 
    System.out.println(address); 
} 
+0

我已经使用了相同的,但我在地址NULL。 – pan1490 2015-04-02 05:55:28

2

密件的全部意义在于,它是一个盲目抄送 - 收件人没有得到,看看谁被复制。您在收到的邮件中看不到密件抄送字段。 (有时,一个密件抄送的收件人会在他们收到的邮件中看到密件抄送标题,但其他收件人将会收到一份没有密件抄送的邮件副本,但我不认为许多邮件发件人已经这样做了,因为它需要发送两个不同的邮件消息的版本。)