Сильфон совершенно не нужен.Я написал это до того, как понял, что вы можете передать getaddresses()
список, содержащий одну строку, содержащую несколько адресов.
У меня не было возможности посмотреть спецификации для адресов в заголовках писем, нона основе предоставленной вами строки этот код должен разбивать ее на список, игнорируя запятые, если они находятся в кавычках (и, следовательно, являются частью имени).
from email.utils import getaddresses
addrstring = ',friend@email.com, John Smith <john.smith@email.com>,"Smith, Jane" <jane.smith@uconn.edu>,'
def addrparser(addrstring):
addrlist = ['']
quoted = False
# ignore comma at beginning or end
addrstring = addrstring.strip(',')
for char in addrstring:
if char == '"':
# toggle quoted mode
quoted = not quoted
addrlist[-1] += char
# a comma outside of quotes means a new address
elif char == ',' and not quoted:
addrlist.append('')
# anything else is the next letter of the current address
else:
addrlist[-1] += char
return getaddresses(addrlist)
print addrparser(addrstring)
Дает:
[('', 'friend@email.com'), ('John Smith', 'john.smith@email.com'),
('Smith, Jane', 'jane.smith@uconn.edu')]
Мне было бы интересно посмотреть, как другие люди решат эту проблему!