[ 
https://issues.apache.org/jira/browse/MAILET-85?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adrian Baker updated MAILET-85:
-------------------------------

    Description: 
In 
org.apache.james.transport.mailets.AbstractRedirect#replaceInternetAddresses(Mail,
 Collection), this code block means that using the "recipients" special 
adresses in the Resend mailet config incorrectly gives you the TO addresses:

} else if (internetAddress.equals(SpecialAddress.TO.toInternetAddress()) || 
internetAddress.equals(SpecialAddress.RECIPIENTS.toInternetAddress())) {
                try {
                                String[] toHeaders = 
mail.getMessage().getHeader(RFC2822Headers.TO);
                                if (toHeaders != null) {
                                                for (int i = 0; i < 
toHeaders.length; i++) {
                                                                try {
                                                                                
InternetAddress[] originalToInternetAddresses = 
InternetAddress.parse(toHeaders[i], false);
                                                                                
for (int j = 0; j < originalToInternetAddresses.length; j++) {
                                                                                
                newList.add(originalToInternetAddresses[j]);
                                                                                
}

The fix is straightforward:

} else if (internetAddress.equals(SpecialAddress.TO.toInternetAddress())) {
        ...
} else if 
(internetAddress.equals(SpecialAddress.RECIPIENTS.toInternetAddress())) {
        if(mail.getRecipients() != null) {
                for(Object recipient : mail.getRecipients()) {
                        
newList.add(((MailAddress)recipient).toInternetAddress());
                }
        }




  was:
In 
org.apache.james.transport.mailets.AbstractRedirect#replaceInternetAddresses(Mail,
 Collection), this code block means that using the "recipients" special 
adresses in the Resend mailet config incorrectly gives you the TO addresses:

{code:java}
} else if (internetAddress.equals(SpecialAddress.TO.toInternetAddress()) || 
internetAddress.equals(SpecialAddress.RECIPIENTS.toInternetAddress())) {
                try {
                                String[] toHeaders = 
mail.getMessage().getHeader(RFC2822Headers.TO);
                                if (toHeaders != null) {
                                                for (int i = 0; i < 
toHeaders.length; i++) {
                                                                try {
                                                                                
InternetAddress[] originalToInternetAddresses = 
InternetAddress.parse(toHeaders[i], false);
                                                                                
for (int j = 0; j < originalToInternetAddresses.length; j++) {
                                                                                
                newList.add(originalToInternetAddresses[j]);
                                                                                
}
{code}

The fix is straightforward:
{code:java}
} else if (internetAddress.equals(SpecialAddress.TO.toInternetAddress())) {
        ...
} else if 
(internetAddress.equals(SpecialAddress.RECIPIENTS.toInternetAddress())) {
        if(mail.getRecipients() != null) {
                for(Object recipient : mail.getRecipients()) {
                        
newList.add(((MailAddress)recipient).toInternetAddress());
                }
        }
{code}



    
> Resend mailet mistakenly treats SpecialAddress.RECIPIENTS as SpecialAddress.TO
> ------------------------------------------------------------------------------
>
>                 Key: MAILET-85
>                 URL: https://issues.apache.org/jira/browse/MAILET-85
>             Project: James Mailet
>          Issue Type: Bug
>    Affects Versions: 3.0
>            Reporter: Adrian Baker
>
> In 
> org.apache.james.transport.mailets.AbstractRedirect#replaceInternetAddresses(Mail,
>  Collection), this code block means that using the "recipients" special 
> adresses in the Resend mailet config incorrectly gives you the TO addresses:
> } else if (internetAddress.equals(SpecialAddress.TO.toInternetAddress()) || 
> internetAddress.equals(SpecialAddress.RECIPIENTS.toInternetAddress())) {
>               try {
>                               String[] toHeaders = 
> mail.getMessage().getHeader(RFC2822Headers.TO);
>                               if (toHeaders != null) {
>                                               for (int i = 0; i < 
> toHeaders.length; i++) {
>                                                               try {
>                                                                               
> InternetAddress[] originalToInternetAddresses = 
> InternetAddress.parse(toHeaders[i], false);
>                                                                               
> for (int j = 0; j < originalToInternetAddresses.length; j++) {
>                                                                               
>                 newList.add(originalToInternetAddresses[j]);
>                                                                               
> }
> The fix is straightforward:
> } else if (internetAddress.equals(SpecialAddress.TO.toInternetAddress())) {
>       ...
> } else if 
> (internetAddress.equals(SpecialAddress.RECIPIENTS.toInternetAddress())) {
>       if(mail.getRecipients() != null) {
>               for(Object recipient : mail.getRecipients()) {
>                       
> newList.add(((MailAddress)recipient).toInternetAddress());
>               }
>       }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to