@@ -445,6 +445,11 @@ defmodule Mail.Parsers.RFC2822 do
445445 defp parse_header_value ( "from" , value ) ,
446446 do: parse_recipient_value ( value )
447447
448+ # If present, the Sender header always contains only one recipient
449+ # If not present, the Sender will be nil
450+ defp parse_header_value ( "sender" , value ) ,
451+ do: parse_recipient_value ( value ) |> List . first ( )
452+
448453 defp parse_header_value ( "reply-to" , value ) ,
449454 do: parse_recipient_value ( value )
450455
@@ -475,7 +480,7 @@ defmodule Mail.Parsers.RFC2822 do
475480 do: datetime
476481
477482 defp decode_header_value ( key , addresses , opts )
478- when key in [ "to" , "cc" , "bcc" , "from" , "reply-to" ] and is_list ( addresses ) do
483+ when key in [ "to" , "cc" , "bcc" , "from" , "sender" , " reply-to"] and is_list ( addresses ) do
479484 addresses =
480485 Enum . map ( addresses , fn
481486 { name , email } ->
@@ -489,12 +494,12 @@ defmodule Mail.Parsers.RFC2822 do
489494 addresses
490495 end
491496
492- defp decode_header_value ( "from " , { _name , _address } = value , opts ) do
493- [ from ] = decode_header_value ( "from " , [ value ] , opts )
494- from
497+ defp decode_header_value ( "sender " , { _name , _address } = value , opts ) do
498+ [ sender ] = decode_header_value ( "sender " , [ value ] , opts )
499+ sender
495500 end
496501
497- defp decode_header_value ( "from " , value , _opts ) , do: value
502+ defp decode_header_value ( "sender " , value , _opts ) , do: value
498503
499504 defp decode_header_value ( "received" , value , _opts ) ,
500505 do: value
0 commit comments