anchor.diff:      % pass 1: filter undersirable content
       case filter_multipart(Subtype, Parts) of
           [] ->
  -            false;
  +            drop;
           [{Type2, Subtype2, _Header2, Params2, Parts2}] ->
               % keep the top-most headers
               % FIXME: some top-most should be preserved, but not Content-Type
  -            {true, {Type2, Subtype2, Header, Params2, Parts2}};
  +            {send, {Type2, Subtype2, Header, Params2, Parts2}};
           Parts3 when is_list(Parts3) ->
               % pass 2: select the best part
               {ok, Filter} = application:get_env(rabbitmq_email, email_filter),
  -            {true, best_multipart(Parts3, lists:reverse(Filter), Parent)}
  +            {send, best_multipart(Parts3, lists:reverse(Filter), Parent)}
       end;
   
   filter_body({<<"text">>, Subtype, Header, Params, Text}) ->
  
positive.code:     catch
      What:Why ->
          rabbit_log:error("Message decode FAILED with ~p:~p~n", [What, Why]),
          false
      end;
  
  filter_body({<<"multipart">>, Subtype, Header, _Params, Parts}=Parent) ->
  
negative.code:         % extract the useful content
          _Else ->
              case filter_body(Data) of
                  {send, {Type,Subtype,Headers,Params,Body}} when is_binary(Body) ->
                      {ok, <<Type/binary, $/, Subtype/binary>>, extract_headers(Headers, Params), Body};
                  {send, Multipart} ->
                      {ok, <<"application/mime">>, [], mimemail:encode(Multipart)};
                  {empty, {_,_,Headers,Params,_}} ->
                      {ok, <<>>, extract_headers(Headers, Params), <<>>};
                  drop ->
                      error
              end
      end.
  