вторник, 2 декабря 2008 г.

Python gotcha

Сегодня делал второй (пятый) выпуск рассылки. Начиная с четвертого выпуска для рассылок используется свой код на Python. И вот сегодня несколько человек написали, что они не могут прочесть письмо т.к. одни кракозябры.

Я конечно тестировал код перед рассылкой и у меня в гмейл все показывалось нормально. Выяснился забавный баг. Письмо у меня собирается примерно так:

msgText = MIMEText(html_version.encode('utf8'), 'html', 'utf8')

Здесь html_version - это unicode-строка, которую я кодирую в UTF, а последний аргумент 'utf8' указывает MIME-кодировку полученного объекта. Теперь начинается интересное. Кодировки MIME с названием "utf8" не существует, а существует "utf-8" (с дефисом). На питоне можно писать и так и эдак, разницы никакой, а вот для внешнего мира это оказалось существенно.

Непонятно, правда, почему email lib не может делать эту подстановку за пользователя. Зафайлил баг в трекер.

0 коммент.:

Отправить комментарий