diff --git a/src/gen_smtp_server_session.erl b/src/gen_smtp_server_session.erl index c1ec2015..4a612148 100644 --- a/src/gen_smtp_server_session.erl +++ b/src/gen_smtp_server_session.erl @@ -660,6 +660,11 @@ parse_encoded_address(<>, Acc, {false, AB}) when H >= $a, H =< $ parse_encoded_address(Tail, [H | Acc], {false, AB}); % lowercase letters parse_encoded_address(<>, Acc, {false, AB}) when H =:= $-; H =:= $.; H =:= $_ -> parse_encoded_address(Tail, [H | Acc], {false, AB}); % dash, dot, underscore +% Allowed characters in the local name: ! # $ % & ' * + - / = ? ^ _ ` . { | } ~ +parse_encoded_address(<>, Acc, {false, AB}) when H =:= $+; + H =:= $!; H =:= $#; H =:= $$; H =:= $%; H =:= $&; H =:= $'; H =:= $*; H =:= $=; + H =:= $/; H =:= $?; H =:= $^; H =:= $`; H =:= ${; H =:= $|; H =:= $}; H =:= $~ -> + parse_encoded_address(Tail, [H | Acc], {false, AB}); % other characters parse_encoded_address(_, _Acc, {false, _AB}) -> error; parse_encoded_address(<>, Acc, Quotes) ->