Найти - Пользователи
Полная версия: Баг emai.header.decode_header или я турлю..
Начало » Python для новичков » Баг emai.header.decode_header или я турлю..
1
mironich
В общем в каком-то RFC описано что заголовки могут быть в формате:=?<code_page>?<encode_method>?<encode_text>?=
В emai.header.decode_header проверяется все это такой регуляркой:
ecre = re.compile(r'''
  =\?                   # literal =?
  (?P<charset>[^?]*?)   # non-greedy up to the next ? is the charset
  \?                    # literal ?
  (?P<encoding>[qb])    # either a "q" or a "b", case insensitive
  \?                    # literal ?
  (?P<encoded>.*?)      # non-greedy up to the next ?= is the encoded string
  \?=                   # literal ?=
  (?=[ \t]|$)           # whitespace or the end of the string
  ''', re.VERBOSE | re.IGNORECASE | re.MULTILINE)
В письме от mail.ru
FROM header выглядит так:
=?windows-1251?B?zvLi5fL7QE1haWwuUnU=?=<otvet@corp.mail.ru>
Он закодирован методом описанным выше…
decode_header возвращает список из кортежей в которых первый элемент тело заголовка(значение), второй кодировка None если ее нету, заголовок выше закодирован…
Но decode_header возвращает список
[('=?windows-1251?B?zvLi5fL7QE1haWwuUnU=?=<otvet@corp.mail.ru>', None)]
Т.к строка закодированная оканчивается не переносом или ?= а <otvet@corp.mail.ru> это мейл ру стандарты нарушает?
Или баг функциии или я туплю?
Зы другой сервис шлет…
Такого вида: =?windows-1251?B?zvLi5fL7QE1haWwuUnU=?= <otvet@corp.mail.ru>
Тоесть получается что на части разбивает.
pyuser
python 3.3.2
from email.header import decode_header
print(decode_header('=?windows-1251?B?zvLi5fL7QE1haWwuUnU=?=<otvet@corp.mail.ru>'))
результат
[(b'\xce\xf2\xe2\xe5\xf2\xfb@Mail.Ru', 'windows-1251'), (b'<otvet@corp.mail.ru>', None)]
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB