Найти - Пользователи
Полная версия: И снова проблема с кодировкой.
Начало » Python для новичков » И снова проблема с кодировкой.
1
sliv
В общем проблема следующая: в проекте использую функцию send_mail(). Все доходит, тема приходит верно, а вот с текстом письма проблемы. Если не декодировать принудительно в utf-8, то в теле письма получаем что-то подобное:

{'comment': u'\u0447\u0444\u044b\u0447\u0444\u044b\u0441', 'phone': u'\u0432\u0430\u043f\u0440\u043e', 'contact_time': u'\u0447\u0444\u044b\u0447\u0444\u044b', 'name': u'acccc', 'address': u'\u0441\u0444\u044b\u0447\u0441\u044b\u0444\u0447\u0444'}

Если значения, передаваемые в message (value в моем случае), предварительно обработать unicode() или encode('utf-8'), тогда имеем:

{'comment': '\xd0\xbf\xd0\xb2\xd0\xb0\xd0\xb2\xd0\xbf', 'phone': '\xd0\xb0\xd0\xb2\xd0\xb2\xd0\xbf', 'contact_time': '\xd0\xb2\xd0\xbf\xd0\xb0\xd0\xb2\xd0\xbf', 'name': '\xd0\xb2\xd0\xb0\xd0\xbf\xd1\x80\xd0\xbe', 'address': '\xd0\xbf\xd0\xb2\xd0\xb0\xd0\xbf\xd0\xb0\xd0\xbf'}

Понятное дело, что в случае использования английской раскладки все читабельно. Т.е., все что за пределами ascii (апострофы тоже страдают) приходит в виде кода.

Да, в переменную message я передаю поля вытащенные из формы:

class DefaultOrderForm(forms.Form):
    name = forms.CharField(label=_('Customer name'), max_length=100)
    phone = forms.CharField(label=_('Customer phone'), max_length=100)
    address = forms.CharField(label=_('Delivery address'), max_length=255)
    contact_time = forms.CharField(label=_('Convenient time to call'),
        max_length=50, required=False)
    comment = forms.CharField(label=_('Comment for us'), max_length=255,
        widget=forms.Textarea(), required=False)

Вот функция перебора входных данных из формы, которая прописывает все в файлик order.txt. В send-mail() просто его отправляю.

def comment_order(order, form_data):
    OrderForm = get_order_form()
    result = {}
    for field_name, value in form_data.iteritems():
        result.update({
            field_name: (value),
        })
    message = loader.render_to_string('basket/order.txt', {
        'order': order,
        'result': result,
    })
    return message

Наверняка кто-то сталкивался. Очень нужна Ваша помощь.
mironich
Не лучший вариант но если нечего другого не останется:
Поставь на хост с django сниффер и смотри что идет при отправке сообщения какие заголовки тело…
М.б заголовки не правильно составлены.
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