[[Howtoavoidsendingsomeorallmessageheaders-Howtoavoidsendingsomeorallmessageheaders]]
=== How to avoid sending some or all message headers?

When I send a message to a Camel endpoint such as the
<<mail-component,Mail>> component, then the mail include some message
headers I do not want. How can I avoid this?

[[Howtoavoidsendingsomeorallmessageheaders-UseremoveHeadersintheroute]]
==== Use removeHeaders in the route

This is a gotcha more people encounter. However it's very easy to solve.
To remove all headers use a wildcard expression:

[source,java]
----
from(...).removeHeaders("*").to("smtp://....")
----

Similarly to remove all headers except some of your own (`myheader1` and
`myheader2`) use a wildcard with a vararg:

[source,java]
----
from(...).removeHeaders("*", "myheader1", "myheader2").to("smtp://....")
----

To do (a similar thing) in XML DSL you simply do:

[source,xml]
----
<route>
  <from uri="..."/>
  <removeHeaders pattern="*" excludePattern="header1|header2"/>
  <to uri="smtp://..."/>
</route>
----

At present, the `excludePattern` only supports one header name (which
can be include wild cards or regular expressions). We tackle this
limitation with
https://issues.apache.org/jira/browse/CAMEL-6445[CAMEL-6445].

Again to remove only Camel headers but no other transport headers:

[source,java]
----
from(...).removeHeaders("Camel*").to("smtp://....")
----

To do this in XML DSL you simply do:

[source,xml]
----
<route>
  <from uri="..."/>
  <removeHeaders pattern="Camel*"/>
  <to uri="smtp://..."/>
</route>
----

There is also a removeHeader in the DSL to remove a single header. But
it does not support patterns, so you can only remove a single header by
its name.

[[Howtoavoidsendingsomeorallmessageheaders-UseHeaderFilterStrategy]]
==== Use HeaderFilterStrategy

An alternative is that some of the Camel
link:../component.adoc[Components] supports configuring a custom header
filter strategy.
This allows you to implement the
`org.apache.camel.spi.HeaderFilterStrategy` interface, where you can
filter unwanted headers.
Though it's often easier to use the `removeHeaders` in the Camel route as
shown above.
