for x in self:
if x.token_type == 'addr-spec':
return x.addr_spec
+ else:
+ return '<>'
class ObsRoute(TokenList):
"expected angle-addr but found '{}'".format(value))
angle_addr.append(ValueTerminal('<', 'angle-addr-start'))
value = value[1:]
+ # Although it is not legal per RFC5322, SMTP uses '<>' in certain
+ # circumstances.
+ if value[0] == '>':
+ angle_addr.append(ValueTerminal('>', 'angle-addr-end'))
+ angle_addr.defects.append(errors.InvalidHeaderDefect(
+ "null addr-spec in angle-addr"))
+ value = value[1:]
+ return angle_addr, value
try:
token, value = get_addr_spec(value)
except errors.HeaderParseError:
"obsolete route specification in angle-addr"))
except errors.HeaderParseError:
raise errors.HeaderParseError(
- "expected addr-spec or but found '{}'".format(value))
+ "expected addr-spec or obs-route but found '{}'".format(value))
angle_addr.append(token)
token, value = get_addr_spec(value)
angle_addr.append(token)
self.assertIsNone(angle_addr.route)
self.assertEqual(angle_addr.addr_spec, 'dinsdale@example.com')
+ def test_get_angle_addr_empty(self):
+ angle_addr = self._test_get_x(parser.get_angle_addr,
+ '<>',
+ '<>',
+ '<>',
+ [errors.InvalidHeaderDefect],
+ '')
+ self.assertEqual(angle_addr.token_type, 'angle-addr')
+ self.assertIsNone(angle_addr.local_part)
+ self.assertIsNone(angle_addr.domain)
+ self.assertIsNone(angle_addr.route)
+ self.assertEqual(angle_addr.addr_spec, '<>')
+
def test_get_angle_addr_with_cfws(self):
angle_addr = self._test_get_x(parser.get_angle_addr,
' (foo) <dinsdale@example.com>(bar)',
self.assertEqual(group.mailboxes,
group.all_mailboxes)
- def test_get_troup_null_addr_spec(self):
+ def test_get_group_null_addr_spec(self):
group = self._test_get_x(parser.get_group,
'foo: <>;',
'foo: <>;',