Yeah, this filter-out missing headers.
Citing your citate:

> (including the header field name, header
> field value, all punctuation, and the trailing CRLF)

Note, that I use `get_header_value(binstr:to_lower(Name), KeyedHeaders)` not like

```
get_header_value(<<"key">>, [{<<"key">>, <<"value">>]])
```
but little hacky: like
```
get_header_value(<<"key">>, [{<<"key">>, <<"key : value">>]])
```
So, if we drop non-existing header, it will be handled like:

```
{h, [<<"from">>, <<"smth">>, <<"to">>]}

Headers = [{<<"from">>, <<"me@example.com">>}, {<<"to">>, <<"he@example.com">>}]
...
hash(<<"from : me@example.comto : he@example.com">>
                             ^ null string here
```