File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -791,6 +791,8 @@ def addr_spec(self):
791791 for x in self :
792792 if x .token_type == 'addr-spec' :
793793 return x .addr_spec
794+ else :
795+ return '<>'
794796
795797
796798class ObsRoute (TokenList ):
@@ -1829,6 +1831,14 @@ def get_angle_addr(value):
18291831 "expected angle-addr but found '{}'" .format (value ))
18301832 angle_addr .append (ValueTerminal ('<' , 'angle-addr-start' ))
18311833 value = value [1 :]
1834+ # Although it is not legal per RFC5322, SMTP uses '<>' in certain
1835+ # circumstances.
1836+ if value [0 ] == '>' :
1837+ angle_addr .append (ValueTerminal ('>' , 'angle-addr-end' ))
1838+ angle_addr .defects .append (errors .InvalidHeaderDefect (
1839+ "null addr-spec in angle-addr" ))
1840+ value = value [1 :]
1841+ return angle_addr , value
18321842 try :
18331843 token , value = get_addr_spec (value )
18341844 except errors .HeaderParseError :
@@ -1838,7 +1848,7 @@ def get_angle_addr(value):
18381848 "obsolete route specification in angle-addr" ))
18391849 except errors .HeaderParseError :
18401850 raise errors .HeaderParseError (
1841- "expected addr-spec or but found '{}'" .format (value ))
1851+ "expected addr-spec or obs-route but found '{}'" .format (value ))
18421852 angle_addr .append (token )
18431853 token , value = get_addr_spec (value )
18441854 angle_addr .append (token )
Original file line number Diff line number Diff line change @@ -1429,6 +1429,19 @@ def test_get_angle_addr_simple(self):
14291429 self .assertIsNone (angle_addr .route )
14301430 self .
assertEqual (
angle_addr .
addr_spec ,
'[email protected] ' )
14311431
1432+ def test_get_angle_addr_empty (self ):
1433+ angle_addr = self ._test_get_x (parser .get_angle_addr ,
1434+ '<>' ,
1435+ '<>' ,
1436+ '<>' ,
1437+ [errors .InvalidHeaderDefect ],
1438+ '' )
1439+ self .assertEqual (angle_addr .token_type , 'angle-addr' )
1440+ self .assertIsNone (angle_addr .local_part )
1441+ self .assertIsNone (angle_addr .domain )
1442+ self .assertIsNone (angle_addr .route )
1443+ self .assertEqual (angle_addr .addr_spec , '<>' )
1444+
14321445 def test_get_angle_addr_with_cfws (self ):
14331446 angle_addr = self ._test_get_x (parser .get_angle_addr ,
14341447 ' (foo) <[email protected] >(bar)' ,
@@ -2007,7 +2020,7 @@ def test_get_group_empty(self):
20072020 self .assertEqual (group .mailboxes ,
20082021 group .all_mailboxes )
20092022
2010- def test_get_troup_null_addr_spec (self ):
2023+ def test_get_group_null_addr_spec (self ):
20112024 group = self ._test_get_x (parser .get_group ,
20122025 'foo: <>;' ,
20132026 'foo: <>;' ,
You can’t perform that action at this time.
0 commit comments