| 71 | | "Forbids multi-line headers, to prevent header injection." |
|---|
| 72 | | if '\n' in val or '\r' in val: |
|---|
| 73 | | raise BadHeaderError, "Header values can't contain newlines (got %r for header %r)" % (val, name) |
|---|
| 74 | | try: |
|---|
| 75 | | val = force_unicode(val).encode('ascii') |
|---|
| 76 | | except UnicodeEncodeError: |
|---|
| 77 | | if name.lower() in ('to', 'from', 'cc'): |
|---|
| 78 | | result = [] |
|---|
| 79 | | for item in val.split(', '): |
|---|
| 80 | | nm, addr = parseaddr(item) |
|---|
| 81 | | nm = str(Header(nm, settings.DEFAULT_CHARSET)) |
|---|
| 82 | | result.append(formataddr((nm, str(addr)))) |
|---|
| 83 | | val = ', '.join(result) |
|---|
| 84 | | else: |
|---|
| 85 | | val = Header(force_unicode(val), settings.DEFAULT_CHARSET) |
|---|
| 86 | | return (name, val) |
|---|
| | 71 | "Forbids multi-line headers, to prevent header injection." |
|---|
| | 72 | if '\n' in val or '\r' in val: |
|---|
| | 73 | raise BadHeaderError("Header values can't contain newlines (got %r for header %r)" % (val, name)) |
|---|
| | 74 | try: |
|---|
| | 75 | val = force_unicode(val).encode('ascii') |
|---|
| | 76 | except UnicodeEncodeError: |
|---|
| | 77 | if name.lower() in ('to', 'from', 'cc'): |
|---|
| | 78 | result = [] |
|---|
| | 79 | for item in val.split(', '): |
|---|
| | 80 | nm, addr = parseaddr(item) |
|---|
| | 81 | nm = str(Header(nm, settings.DEFAULT_CHARSET)) |
|---|
| | 82 | result.append(formataddr((nm, str(addr)))) |
|---|
| | 83 | val = ', '.join(result) |
|---|
| | 84 | else: |
|---|
| | 85 | val = Header(force_unicode(val), settings.DEFAULT_CHARSET) |
|---|
| | 86 | return name, val |
|---|