error if incoming email is empty
Closed this issue · 2 comments
tepsl commented
Empty incoming email results in error.
Blow is rabbitmq server log;
** When Server state == {state,#Port<0.17148>,rabbit_email_handler,
{envelope,<<"andrew@hijacked.us">>,
[<<"aaa@example.com">>],
<<>>,0,
{<<>>,<<>>}},
[{"SIZE","10485670"},
{"8BITMIME",true},
{"PIPELINING",true}],
false,undefined,true,false,
{state,<0.6677.0>,[]},
[{hostname,"example.com"},
{sessioncount,1}]}
** Reason for termination ==
** {{case_clause,empty},
[{rabbit_email_handler,handle_DATA,4,
[{file,"src/rabbit_email_handler.erl"},{line,96}]},
{gen_smtp_server_session,handle_info,2,
[{file,"rabbitmq-gen-smtp-git/src/gen_smtp_server_session.erl"},
{line,184}]},
{gen_server,try_dispatch,4,[{file,"gen_server.erl"},{line,593}]},
{gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,659}]},
{proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,237}]}]}
This can be avoided by commenting out "do not send empty body" source code lines.
diff --git a/src/rabbit_email_handler.erl b/src/rabbit_email_handler.erl
index 2f85345..3372659 100644
--- a/src/rabbit_email_handler.erl
+++ b/src/rabbit_email_handler.erl
@@ -187,16 +187,17 @@ filter_body({<<"text">>, Subtype, Header, Params, Text}) ->
Text2 = re:replace(Text, "(^\\s+)|(\\s+$)", "", [global, {return, binary}]),
% convert DOS to Unix EOL
Text3 = binary:replace(Text2, <<16#0D, 16#0A>>, <<16#0A>>, [global]),
+ {true, {<<"text">>, Subtype, Header, Params, Text3}};
% do not send empty body
- if
- byte_size(Text3) > 0 ->
- % rabbit_log:info("Parsing text/~p~n", [Subtype]),
- {true, {<<"text">>, Subtype, Header, Params, Text3}};
- Subtype == <<"plain">> ->
- empty;
- true ->
- false
- end;
+ %if
+ % byte_size(Text3) > 0 ->
+ % % rabbit_log:info("Parsing text/~p~n", [Subtype]),
+ % {true, {<<"text">>, Subtype, Header, Params, Text3}};
+ % Subtype == <<"plain">> ->
+ % empty;
+ % true ->
+ % false
+ %end;
% remove proprietary formats
filter_body({<<"application">>, <<"ms-tnef">>, _H, _A, _P}) -> false;
tepsl commented
'Empty' means empty body.
The email is nothing but headers and CRLF.