Search in sources :

Example 1 with ReplyToAddresses

use of com.fsck.k9.helper.ReplyToParser.ReplyToAddresses in project k-9 by k9mail.

the class ReplyToParser method getRecipientsToReplyAllTo.

public ReplyToAddresses getRecipientsToReplyAllTo(Message message, Account account) {
    List<Address> replyToAddresses = Arrays.asList(getRecipientsToReplyTo(message, account).to);
    HashSet<Address> alreadyAddedAddresses = new HashSet<>(replyToAddresses);
    ArrayList<Address> toAddresses = new ArrayList<>(replyToAddresses);
    ArrayList<Address> ccAddresses = new ArrayList<>();
    for (Address address : message.getFrom()) {
        if (!alreadyAddedAddresses.contains(address) && !account.isAnIdentity(address)) {
            toAddresses.add(address);
            alreadyAddedAddresses.add(address);
        }
    }
    for (Address address : message.getRecipients(RecipientType.TO)) {
        if (!alreadyAddedAddresses.contains(address) && !account.isAnIdentity(address)) {
            toAddresses.add(address);
            alreadyAddedAddresses.add(address);
        }
    }
    for (Address address : message.getRecipients(RecipientType.CC)) {
        if (!alreadyAddedAddresses.contains(address) && !account.isAnIdentity(address)) {
            ccAddresses.add(address);
            alreadyAddedAddresses.add(address);
        }
    }
    return new ReplyToAddresses(toAddresses, ccAddresses);
}
Also used : Address(com.fsck.k9.mail.Address) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet)

Example 2 with ReplyToAddresses

use of com.fsck.k9.helper.ReplyToParser.ReplyToAddresses in project k-9 by k9mail.

the class ReplyToParserTest method getRecipientsToReplyAllTo_should_excludeDuplicates.

@Test
public void getRecipientsToReplyAllTo_should_excludeDuplicates() throws Exception {
    when(message.getReplyTo()).thenReturn(REPLY_TO_ADDRESSES);
    when(message.getFrom()).thenReturn(arrayConcatenate(FROM_ADDRESSES, REPLY_TO_ADDRESSES, Address.class));
    when(message.getRecipients(RecipientType.TO)).thenReturn(arrayConcatenate(FROM_ADDRESSES, TO_ADDRESSES, Address.class));
    when(message.getRecipients(RecipientType.CC)).thenReturn(arrayConcatenate(CC_ADDRESSES, TO_ADDRESSES, Address.class));
    when(message.getHeader(ListHeaders.LIST_POST_HEADER)).thenReturn(new String[0]);
    ReplyToAddresses recipientsToReplyAllTo = replyToParser.getRecipientsToReplyAllTo(message, account);
    assertArrayContainsAll(REPLY_TO_ADDRESSES, recipientsToReplyAllTo.to);
    assertArrayContainsAll(FROM_ADDRESSES, recipientsToReplyAllTo.to);
    assertArrayContainsAll(TO_ADDRESSES, recipientsToReplyAllTo.to);
    int totalExpectedAddresses = REPLY_TO_ADDRESSES.length + FROM_ADDRESSES.length + TO_ADDRESSES.length;
    assertEquals(totalExpectedAddresses, recipientsToReplyAllTo.to.length);
    assertArrayEquals(CC_ADDRESSES, recipientsToReplyAllTo.cc);
}
Also used : Address(com.fsck.k9.mail.Address) ReplyToAddresses(com.fsck.k9.helper.ReplyToParser.ReplyToAddresses) Test(org.junit.Test)

Example 3 with ReplyToAddresses

use of com.fsck.k9.helper.ReplyToParser.ReplyToAddresses in project k-9 by k9mail.

the class ReplyToParserTest method getRecipientsToReplyTo_should_prefer_replyTo_over_any_other_field.

@Test
public void getRecipientsToReplyTo_should_prefer_replyTo_over_any_other_field() throws Exception {
    when(message.getReplyTo()).thenReturn(REPLY_TO_ADDRESSES);
    when(message.getHeader(ListHeaders.LIST_POST_HEADER)).thenReturn(LIST_POST_HEADER_VALUES);
    when(message.getFrom()).thenReturn(FROM_ADDRESSES);
    ReplyToAddresses result = replyToParser.getRecipientsToReplyTo(message, account);
    assertArrayEquals(REPLY_TO_ADDRESSES, result.to);
    assertArrayEquals(EMPTY_ADDRESSES, result.cc);
    verify(account).isAnIdentity(result.to);
}
Also used : ReplyToAddresses(com.fsck.k9.helper.ReplyToParser.ReplyToAddresses) Test(org.junit.Test)

Example 4 with ReplyToAddresses

use of com.fsck.k9.helper.ReplyToParser.ReplyToAddresses in project k-9 by k9mail.

the class ReplyToParserTest method getRecipientsToReplyTo_should_prefer_listPost_over_from_field.

@Test
public void getRecipientsToReplyTo_should_prefer_listPost_over_from_field() throws Exception {
    when(message.getReplyTo()).thenReturn(EMPTY_ADDRESSES);
    when(message.getHeader(ListHeaders.LIST_POST_HEADER)).thenReturn(LIST_POST_HEADER_VALUES);
    when(message.getFrom()).thenReturn(FROM_ADDRESSES);
    ReplyToAddresses result = replyToParser.getRecipientsToReplyTo(message, account);
    assertArrayEquals(LIST_POST_ADDRESSES, result.to);
    assertArrayEquals(EMPTY_ADDRESSES, result.cc);
    verify(account).isAnIdentity(result.to);
}
Also used : ReplyToAddresses(com.fsck.k9.helper.ReplyToParser.ReplyToAddresses) Test(org.junit.Test)

Example 5 with ReplyToAddresses

use of com.fsck.k9.helper.ReplyToParser.ReplyToAddresses in project k-9 by k9mail.

the class RecipientPresenter method initFromReplyToMessage.

public void initFromReplyToMessage(Message message, boolean isReplyAll) {
    ReplyToAddresses replyToAddresses = isReplyAll ? replyToParser.getRecipientsToReplyAllTo(message, account) : replyToParser.getRecipientsToReplyTo(message, account);
    addToAddresses(replyToAddresses.to);
    addCcAddresses(replyToAddresses.cc);
    boolean shouldSendAsPgpInline = composePgpInlineDecider.shouldReplyInline(message);
    if (shouldSendAsPgpInline) {
        cryptoEnablePgpInline = true;
    }
}
Also used : ReplyToAddresses(com.fsck.k9.helper.ReplyToParser.ReplyToAddresses)

Aggregations

ReplyToAddresses (com.fsck.k9.helper.ReplyToParser.ReplyToAddresses)9 Test (org.junit.Test)8 Address (com.fsck.k9.mail.Address)4 Message (com.fsck.k9.mail.Message)1 Recipient (com.fsck.k9.view.RecipientSelectView.Recipient)1 ArrayList (java.util.ArrayList)1 HashSet (java.util.HashSet)1