Skip to content

Commit 58eca93

Browse files
committed
Added validation of email addresses extracted by get_email_addresses_from_text().
- Legacy-Id: 16439
1 parent 25af6fb commit 58eca93

File tree

1 file changed

+14
-1
lines changed

1 file changed

+14
-1
lines changed

ietf/utils/mail.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import copy
44
import datetime
5+
import logging
6+
import re
57
import smtplib
68
import sys
79
import textwrap
@@ -520,6 +522,7 @@ def is_valid_email(address):
520522
except ValidationError:
521523
return False
522524

525+
logger = logging.getLogger('django')
523526
def get_email_addresses_from_text(text):
524527
"""
525528
@@ -531,5 +534,15 @@ def get_email_addresses_from_text(text):
531534
Returns a list of properly formatted email address strings.
532535
533536
"""
534-
return [ formataddr(e) for e in getaddresses([text, ]) ]
537+
def valid(email):
538+
name, addr = email
539+
try:
540+
validate_email(addr)
541+
return True
542+
except ValidationError:
543+
logger.error(f'Bad data: get_email_addresses_from_text() got an invalid email address tuple: {email}, in "{text}".')
544+
return False
545+
# whitespace normalization -- getaddresses doesn't do this
546+
text = re.sub(r'(?u)\s+', ' ', text)
547+
return [ formataddr(e) for e in getaddresses([text, ]) if valid(e) ]
535548

0 commit comments

Comments
 (0)