无法在java中读取已发送邮件的BCC字段

时间:2015-04-01 13:32:04

标签: java javamail

我从接收邮件中提取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收件人的名字,但我无法访问该标题。 此代码问题或发送邮件时是否存在某些特定设置,例如不包括BCC字段?

3 个答案:

答案 0 :(得分:2)

Bcc的重点在于它是一张盲目副本 - 收件人不会看到谁被复制。您在收到的邮件中看不到密件抄送字段。 (有时,密件抄送收件人会在他们收到的邮件中看到密件抄送标题,但其他收件人会收到邮件的副本而没有密件抄送。但我不认为很多邮件人会这样做,因为它需要发送两个不同版本的消息。)

答案 1 :(得分:1)

您可以检查包含邮件所有详细信息的Message对象。 由于BCC是邮件的一部分,但它也会被隐藏,但据我所知,您可以从邮件头中检索信息。

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

这将为您提供有关邮件中特定标题标记的所有详细信息。

,例如

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

此标记将为您提供有关邮件收件人的所有信息,其中还包括BCC。

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

答案 2 :(得分:0)

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

返回一个地址数组。您可以在for循环中检查内容:

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