Hi

Did you try with this code and did it work for you?


On Thu, Nov 5, 2009 at 12:50 AM, dcheckoway <dchecko...@gmail.com> wrote:
>
> Claus, I'm not a contributor on the Camel project, but here's what I would
> advocate trying in MailBinding.java, expanding the meaning of
> "ignoreUnsupportedCharset" a bit:
>
>    public Object extractBodyFromMail(Exchange exchange, Message message) {
>        return extractBodyFromMail(exchange, message, false);
>    }
>
>    private Object extractBodyFromMail(Exchange exchange, Message message,
> boolean isSecondAttempt) {
>        try {
>            return message.getContent();
>        } catch (Exception e) {
>            if (!isSecondAttempt &&
>                (e instanceof java.io.UnsupportedEncodingException ||
>                 (e.getCause() != null &&
>                  e.getCause() instanceof
> java.io.UnsupportedEncodingException)) &&
>                configuration.isIgnoreUnsupportedCharset()) {
>                // The charset is unsupported, but we've been configured to
>                // ingore that condition.  Let's at least attempt to rewrite
>                // the Content-Type header and omit the unsupported charset.
>                // This may wreak havoc down the line, but it's better than
>                // Camel just bailing on this exchange, and ending up
> retrying
>                // this same message over and over, and failing every
> time...
>                String contentType = message.getContentType();
>                if (contentType != null) {
>                    // Wipe out the charset=... from the Content-Type header
>                    contentType =
> contentType.replaceAll("\\s*charset=[^;\\s]+", "");
>                    part.setHeader("Content-Type", contentType);
>                    // Try again...pass isSecondAttempt=true this time
>                    return extractBodyFromMail(exchange, message, true);
>                }
>            }
>            else {
>                throw new RuntimeCamelException("Failed to extract body due
> to: " + e.getMessage()
>                                                + ". Exchange: " + exchange
> + ". Message: " + message, e);
>            }
>        }
>    }
>
> What do you think?
>
>
>
> Claus Ibsen-2 wrote:
>>
>> On Wed, Nov 4, 2009 at 7:24 PM, dcheckoway <dchecko...@gmail.com> wrote:
>>>
>>> Is there any way to "intercept" the raw mail message content before it
>>> gets
>>> passed to the java mail API?  I would be happy to manually munge the
>>> Content-Type header if I detect one of the known-to-be-funky charsets in
>>> there.
>>>
>>
>> You can use a custom MailBinding class, e.g. extending the on in
>> camel-maill.
>>
>
> --
> View this message in context: 
> http://old.nabble.com/Camel-Mail-issue-with-unsupported-charset-tp24755585p26206832.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>



-- 
Claus Ibsen
Apache Camel Committer

Author of Camel in Action: http://www.manning.com/ibsen/
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Reply via email to